[swift] Swift Moya에서 Basic 인증 사용하기

Swift Moya는 네트워크 요청을 처리하기 위한 강력한 라이브러리입니다. 이 라이브러리를 사용하여 API 요청을 보낼 때, 때로는 사용자의 인증 정보가 필요한 경우가 있습니다. 이번 포스트에서는 Moya에서 Basic 인증을 사용하는 방법을 알아보겠습니다.

1. Basic 인증이란?

Basic 인증은 HTTP 프로토콜에 기본적으로 내장된 인증 방식입니다. 요청을 보낼 때 인증 정보를 요청 헤더에 포함하여 서버에서 인증을 처리합니다. 사용자 이름과 비밀번호를 Base64로 인코딩하여 인증 정보를 생성하고, 요청 헤더의 Authorization 필드에 해당 정보를 넣어 보냅니다.

2. Moya에서 Basic 인증 사용하기

Moya를 사용하여 Basic 인증을 구현하는 방법은 다음과 같습니다.

import Moya

let username = "your_username"
let password = "your_password"

let credentials = "\(username):\(password)".data(using: .utf8)?.base64EncodedString() ?? ""

let provider = MoyaProvider<MyApi>(plugins: [NetworkLoggerPlugin()])

provider.manager.adapter = AccessTokenAdapter(credentials: credentials)

// API 요청 보내기
provider.request(.getUsers) { result in
    // 응답 처리 코드
}

위의 코드에서 MyApi는 Moya의 TargetType 프로토콜을 준수하는 API의 열거형입니다. MyApi 타겟에 Basic 인증을 적용하기 위해 다음과 같이 AccessTokenAdapter를 사용합니다. AccessTokenAdapter는 Moya의 RequestAdapter 프로토콜을 준수하는 커스텀 어댑터입니다.

import Moya

struct AccessTokenAdapter: RequestAdapter {
    private let credentials: String
    
    init(credentials: String) {
        self.credentials = credentials
    }
    
    func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result<URLRequest, Error>) -> Void) {
        var urlRequest = urlRequest
        urlRequest.addValue("Basic \(credentials)", forHTTPHeaderField: "Authorization")
        completion(.success(urlRequest))
    }
}

위의 AccessTokenAdapteradapt(_:for:completion:) 메서드를 구현하여 요청 객체에 인증 정보를 추가합니다.

3. 요약

Swift Moya는 Basic 인증을 간단하게 사용할 수 있도록 도와줍니다. 위의 예제를 참고하여 Moya를 사용하는 프로젝트에서 Basic 인증을 구현해 보세요.