[swift] Swift Moya에서 요청 파라미터 설정하기

Moya는 강력한 네트워킹 라이브러리로, Swift 애플리케이션의 네트워크 호출을 쉽게 처리할 수 있도록 도와줍니다. Moya를 사용하여 API 호출을 수행할 때, 때로는 요청 파라미터를 설정해야 할 수도 있습니다. 이 글에서는 Swift Moya에서 요청 파라미터를 설정하는 방법에 대해 알아보겠습니다.

Moya Provider 생성하기

Moya Provider를 생성하는 첫 번째 단계는 Provider를 초기화하는 것입니다. MoyaProvider 클래스를 인스턴스화하여 Provider를 생성할 수 있습니다. 다음은 Moya Provider를 생성하는 예제입니다.

import Moya

let provider = MoyaProvider<YourAPI>()

위 예제에서 YourAPI는 애플리케이션에서 사용하는 실제 API입니다. MoyaTargetType 프로토콜을 준수하는 API 타겟을 정의한 후, MoyaProvider를 생성할 때 이 타겟을 사용하면 됩니다.

요청 파라미터 설정하기

Moya는 요청 파라미터를 설정하는 다양한 방법을 제공합니다. 가장 일반적인 방법은 MoyaProviderrequest 메서드를 호출할 때 파라미터를 직접 전달하는 것입니다. 다음은 요청 파라미터를 설정하는 예제입니다.

provider.request(.yourEndpoint(parameter1: "value1", parameter2: "value2")) { result in
    switch result {
    case .success(let response):
        // 성공적으로 응답을 받았을 때 수행할 작업
    case .failure(let error):
        // 요청 실패 시 수행할 작업
    }
}

위 예제에서 .yourEndpoint는 애플리케이션의 API 엔드포인트를 나타내는 Moya Target의 케이스입니다. 파라미터를 설정하려면 해당 케이스를 사용한 후 원하는 파라미터 값을 전달하면 됩니다.

또한, Moya는 유연성을 제공하기 위해 MoyaProviderendpointClosure 속성을 사용하여 요청 파라미터를 동적으로 설정할 수 있습니다. 이 방법을 사용하면 요청을 보낼 때마다 파라미터 값을 변경할 수 있습니다.

let provider = MoyaProvider<YourAPI>(endpointClosure: { (target: YourAPI) -> Endpoint in
    let defaultEndpoint = MoyaProvider.defaultEndpointMapping(for: target)
    let modifiedParameters = ["param1": "value1", "param2": "value2"]
    return defaultEndpoint.adding(newParameters: modifiedParameters)
})

위 예제에서는 MoyaProviderendpointClosure를 사용하여 파라미터 값을 동적으로 변경했습니다. defaultEndpoint를 사용하여 기본 엔드포인트를 가져온 다음, adding(newParameters:) 메서드를 사용하여 파라미터를 변경했습니다.

요청 파라미터 인코딩 방식 설정하기

Moya는 다양한 요청 파라미터 인코딩 방식을 지원합니다. 기본 인코딩 방식은 .url입니다. 다음은 요청 파라미터 인코딩 방식을 설정하는 예제입니다.

let provider = MoyaProvider<YourAPI>(requestClosure: { (endpoint: Endpoint, done: MoyaProvider.RequestResultClosure) in
    do {
        var request = try endpoint.urlRequest()
        request.httpBody = try JSONSerialization.data(withJSONObject: yourParameters, options: [])
        done(.success(request))
    } catch {
        done(.failure(MoyaError.underlying(error, nil)))
    }
})

위 예제에서는 MoyaProviderrequestClosure를 사용하여 요청 파라미터 인코딩 방식을 설정했습니다. 인코딩 방식을 사용자 정의하려면 Endpointdone 클로저를 입력으로 받아 요청을 구성한 후 done 클로저에 전달하면 됩니다.

마치며

이제 Moya를 사용하여 Swift 애플리케이션에서 요청 파라미터를 설정하는 방법에 대해 알아보았습니다. Moya는 네트워킹 작업을 간단하고 효율적으로 처리할 수 있는 강력한 도구입니다.

참고 자료