새로운 API 호출 만들기 가이드라인
Posted on 2021-10-20 by GKSRUDTN99
Swift&Xcode
Swift
RxSwift
새로운 API 호출 만들기 가이드라인
1. Request Parameter 만들기
struct GetUserProfile: Codable {
let userId: Int
let type: UserType
let address: Address
enum UserType: String, Codable {
case user
case partner
}
struct Address: Codable {
let address: String
let postNumber: Int
}
}
2. API 열거형에 추가
enum USERAPI {
case getUserProfile(param: GetUserProfile)
}
3. 위에서 추가한 case의 path 작성
extension USERAPI: TargetType {
var path: String {
switch self {
case .getUserProfile:
return "/user"
}
}
}
4. method 작성
extension USERAPI: TargetType {
var method: Moya.Method {
switch self {
case .getUserProfile:
return .get
}
}
}
5. task 등록
extension USERAPI: TargetType {
var task: Task {
switch self {
case .getUserProfile(let param):
return .requestParameters(parameters: try! param.asDictionary(), encoding: URLEncoding.default)
}
}
}
POST 요청의 경우
return .requestJSONEncodable(param)
Task를 사용한다.
6. Response 모델 정의
struct UserProfile: Codable {
let id: Int
let nickname: String
let profileImage: String?
}
API 요청 예시
APIService.shared.userAPI.rx.request(.getUserProfile(param:param))
.retryWithAuthIfNeeded()
.filterSuccessfulStatusCode()
.map(UserProfile.self)
.flatMap { response in
// Something..
}
.catchError { error in
// Error handling..
}