티스토리 뷰
728x90
반응형
Moya에서의 task
HTTP 요청에서 “어떤 데이터를, 어떤 형식으로 보낼지”를 결정하는 프로퍼티
1. Task의 역할
- task: TargetType 구현체에서, 해당 API 호출 시 “Payload(바디)/쿼리/파일/다운로드” 등의 전송 방식을 정의
- HTTP 메서드(method)가 무엇이든, 실제 데이터를 어떻게 담을지(.requestPlain / .requestParameters / .uploadMultipart 등)만 책임
2. 기본 형태
2.1 .requestPlain
- 바디가 전혀 없는 요청
- GET, DELETE 등 그냥 URL 호출할 때 사용
var task: Moya.Task {
return .requestPlain
}
2.2 .requestParameters(parameters:encoding:)
- 키-값(key - value)을 전송
- URLEncoding.queryString → ?key=val&...
- JSONEncoding.default → JSON body
// GET /product?limit=20&page=3
case .listUsers(let limit, let page):
return .requestParameters(
parameters: ["limit": limit, "page": page],
encoding: URLEncoding.queryString
)
// POST /login { "email":"a@b.co", "pw":"1234" }
case .login(let dto):
return .requestParameters(
parameters: ["email": dto.email, "pw": dto.pw],
encoding: JSONEncoding.default
)
3. Encodable 타입 직접 사용
3.1 .requestJSONEncodable(_)
- Swift Encodable 구조체 → 자동으로 JSON 변환 후 body에 담아 전송
- DTO와 라우터 코드가 깔끔하게 분리
struct SignUpDTO: Encodable { let email: String; let pw: String }
case .signup(let dto):
return .requestJSONEncodable(dto)
4. 파일 업로드
4.1 .uploadMultipart([MultipartFormData])
- 여러 파일을 multipart/form-data 형식으로 전송 -> 파일만 전송할 때
- 동영상 · 이미지 · JSON 필드 함께 전송
let parts: [MultipartFormData] = [
MultipartFormData(provider: .file(localURL1),
name: "file1", fileName: "a.mp4",
mimeType: "video/mp4"),
MultipartFormData(provider: .file(localURL2),
name: "file2", fileName: "b.mp4",
mimeType: "video/mp4")
]
return .uploadMultipart(parts)
4.2 .uploadCompositeMultipart(_, urlParameters:)
return .uploadCompositeMultipart(
multipartBody, // 파일들
urlParameters: ["id": 123] // 쿼리도 같이
)
- 용도: 파일 + 일반 파라미터(쿼리 스트링 또는 서버에서 지원할 경우 본문 인코딩) 를 한 번에 전송할 때
- 파라미터 전달
- parts: 파일 및 multipart/form-data 필드
- urlParameters: URL 쿼리스트링(?key=val) 또는 일부 서버가 지원할 경우 JSON body에 함께 인코딩
728x90
반응형
'Swift' 카테고리의 다른 글
[iOS] SwiftUI 공유 기능 - ShareLink (0) | 2025.05.13 |
---|---|
[iOS] Xcode 편집기(editor) 분할하기 (0) | 2025.05.13 |
[iOS] 흠..MVI...? 🤔 (2) | 2025.04.29 |
[iOS] Merquee Effect With SwiftUI (0) | 2025.04.07 |
[iOS] Metal - 1 (0) | 2025.02.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
- 습관형성
- 패스트캠퍼스
- 비대칭키
- 패스트캠퍼스후기
- 직장인자기계발
- GCD
- skip.tools
- http
- https
- jetpack compose
- ios
- 네트워크
- 자료구조
- 오공완
- 앱개발
- 운영체제
- 위젯
- 대칭키
- CPU
- swift
- 환급챌린지
- SwiftUI
- Kotlin
- Android
- Swift Concurrency
- 안드로이드
- realm
- alamofire
- compose
- UIKit
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함
250x250
반응형