Moya는 Swift에서 API 호출을 쉽게 관리할 수 있는 라이브러리입니다. 이 라이브러리를 사용하면 네트워크 요청을 간단하게 작성하고, 응답을 처리하는데 도움을 받을 수 있습니다. 이번에는 Moya를 사용하여 API 요청 시 인증 처리하는 방법에 대해 알아보겠습니다.
1. 인증 헤더 추가하기
API 호출 시에는 보통 인증 정보를 포함한 헤더를 함께 전송해야 합니다. Moya에서는 Endpoint
와 EndpointClosure
를 사용하여 인증 헤더를 추가할 수 있습니다.
import Moya
let myAPI = MoyaProvider<MyService>(endpointClosure: { (target: MyService) -> Endpoint in
let defaultEndpoint = MoyaProvider.defaultEndpointMapping(for: target)
return defaultEndpoint.adding(newHTTPHeaderFields: ["Authorization": "Bearer YOUR_AUTH_TOKEN"])
})
위의 예제에서는 MyService
라는 API 서비스를 MoyaProvider
로 초기화하고, endpointClosure
를 사용하여 기본 엔드포인트에 Authorization
헤더를 추가하였습니다.
2. 인증 토큰 갱신하기
일부 API는 인증 토큰의 만료 시간이 정해져있거나, 재발급이 필요한 경우가 있습니다. 이런 경우에는 인증 토큰을 갱신하는 과정이 필요합니다.
Moya에서는 PluginType
을 사용하여 요청 전/후에 동작하는 플러그인을 만들 수 있습니다. 이를 활용하여 토큰 갱신을 처리할 수 있습니다.
import Moya
class TokenPlugin: PluginType {
func prepare(_ request: URLRequest, target: TargetType) -> URLRequest {
var request = request
// 인증 토큰 재발급 로직 구현
return request
}
}
let tokenPlugin = TokenPlugin()
let myAPI = MoyaProvider<MyService>(plugins: [tokenPlugin])
위의 예제에서는 TokenPlugin
이라는 플러그인을 생성하고, prepare(_:target:)
메소드를 구현하여 요청 전에 동작하는 로직을 추가하였습니다. 이곳에서 인증 토큰을 갱신하는 로직을 구현하면 됩니다.
3. 에러 처리하기
API 호출 시에는 인증 에러, 네트워크 에러 등 다양한 오류가 발생할 수 있습니다. Moya는 이러한 오류를 처리하기 쉽도록 도와줍니다.
let myAPI = MoyaProvider<MyService>(plugins: [NetworkLoggerPlugin()])
myAPI.request(.getUserInfo) { result in
switch result {
case .success(let response):
// 응답 처리
case .failure(let error):
// 에러 처리
}
}
위의 예제에서는 MoyaProvider
에서 request(_:completion:)
메소드를 사용하여 API를 호출하였습니다. 이 때, 결과는 Result<Response, MoyaError>
형태로 받을 수 있으며, 각 상황에 따라 적절한 처리를 할 수 있습니다.
결론
Moya를 사용하여 API 호출 시 인증 처리를 하는 방법에 대해 알아보았습니다. 인증 헤더 추가, 인증 토큰 갱신, 에러 처리에 대해 예제를 통해 설명하였으니 참고하시기 바랍니다. Moya를 사용하여 깔끔하고 효율적인 API 호출 처리를 할 수 있습니다.