[swift] Swift Moya에서 헤더와 쿠키 설정하기

Moya는 Swift의 네트워킹 라이브러리 중 하나로, 헤더와 쿠키와 같은 추가적인 설정을 할 수 있는 기능을 제공합니다. 이번 포스트에서는 Moya를 사용하여 헤더와 쿠키를 설정하는 방법을 알아보겠습니다.

1. Moya의 세션 매니저 사용하기

Moya를 사용하여 헤더와 쿠키를 설정하기 위해서는 먼저 Moya의 세션 매니저를 사용해야 합니다. 세션 매니저는 네트워킹 요청을 보낼 때 사용되는 설정을 포함하고 있습니다.

import Moya

let session = Session(configuration: URLSessionConfiguration.default, interceptor: MyRequestInterceptor())
let provider = MoyaProvider<MyAPI>(session: session)

위의 코드에서 MyRequestInterceptor는 Moya의 RequestInterceptor 프로토콜을 구현한 클래스입니다. 이 클래스는 Moya가 네트워킹 요청을 보낼 때마다 호출됩니다. 따라서 여기에서 헤더와 쿠키를 설정할 수 있습니다.

2. RequestInterceptor 구현하기

import Moya

class MyRequestInterceptor: RequestInterceptor {
    func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result<URLRequest, Error>) -> Void) {
        var adaptedRequest = urlRequest
        
        // 헤더 설정
        adaptedRequest.setValue("Bearer {YOUR_AUTH_TOKEN}", forHTTPHeaderField: "Authorization")
        
        // 쿠키 설정
        // 예제에서는 임의로 쿠키 값을 설정하는 방법을 보여주고 있습니다. 실제 사용 시에는 쿠키 값을 알맞게 설정해야 합니다.
        let cookies = [
            HTTPCookie(properties: [.name: "cookieName1", .value: "cookieValue1"]),
            HTTPCookie(properties: [.name: "cookieName2", .value: "cookieValue2"])
        ]
        let cookieHeader = cookies.compactMap { $0 }.map { "\($0.name)=\($0.value)" }.joined(separator: "; ")
        adaptedRequest.setValue(cookieHeader, forHTTPHeaderField: "Cookie")
        
        completion(.success(adaptedRequest))
    }
}

위의 코드에서 YOUR_AUTH_TOKEN에는 실제 사용자의 인증 토큰을 입력해야 합니다. 또한, cookieName1, cookieValue1, cookieName2, cookieValue2 등을 필요에 따라 알맞게 변경하셔야 합니다.

이제 Moya의 세션 매니저에 MyRequestInterceptor를 적용하면 헤더와 쿠키가 설정된 상태로 네트워킹 요청이 이루어집니다.

마무리

이번에는 Moya를 사용하여 Swift에서 헤더와 쿠키를 설정하는 방법에 대해 알아보았습니다. Moya의 세션 매니저와 RequestInterceptor를 활용하여 네트워킹 요청에 필요한 헤더와 쿠키를 간편하게 설정할 수 있습니다.

더 자세한 정보는 Moya 공식 문서를 참고하세요.