[swift] Swift Moya에서 파일 업로드 기능 구현하기

Moya는 Swift에서 네트워킹을 쉽게 다룰 수 있는 라이브러리입니다. 파일 업로드 기능은 많은 애플리케이션에서 필요한 기능 중 하나입니다. 이번 포스트에서는 Swift Moya를 사용하여 파일 업로드를 구현하는 방법을 알아보겠습니다.

1. MultipartFormData 생성하기

MultipartFormData는 파일 업로드에 사용되는 데이터 타입입니다. 이를 생성하기 위해서는 MultipartFormData 클래스를 사용해야 합니다.

다음은 파일 업로드에 필요한 MultipartFormData를 생성하는 코드입니다.

// MultipartFormData 생성
let formData = MultipartFormData(provider: .data(data),
                                 name: "file",
                                 fileName: "example.jpg",
                                 mimeType: "image/jpeg")

위 코드에서 data는 업로드할 파일의 데이터입니다. name은 서버에서 해당 파일을 참조하기 위한 이름이며, fileName은 실제 파일 이름입니다. mimeType은 파일의 타입을 나타냅니다.

2. MoyaProvider 생성하기

이제 MoyaProvider를 생성하여 파일 업로드를 수행할 준비가 되었습니다. MoyaProvider는 Moya의 주요 클래스로, 네트워크 요청을 보내고 응답을 받는 역할을 합니다.

// MoyaProvider 생성
let provider = MoyaProvider<API>()

위 코드에서 API는 요청을 정의한 enum입니다. 이 enum은 Moya의 TargetType 프로토콜을 채택하여 구현합니다.

3. 파일 업로드 요청 보내기

이제 파일 업로드 요청을 보내기 위해 MoyaProvider의 request() 메소드를 사용합니다.

provider.request(.uploadFile(formData: formData)) { result in
    switch result {
    case .success(let response):
        // 파일 업로드 성공 처리
        print("Upload Success: \(response)")
    case .failure(let error):
        // 파일 업로드 실패 처리
        print("Upload Failed: \(error)")
    }
}

위 코드에서 .uploadFile(formData: formData)는 파일 업로드를 위한 API 엔드포인트를 나타냅니다. 엔드포인트는 API enum에 정의되어야 합니다.

request() 메소드의 클로저에서 업로드 결과를 처리할 수 있습니다. 업로드 성공 시 success case에 응답(response)이 전달되고, 실패 시 failure case에 에러(error)가 전달됩니다.

결론

Swift Moya를 사용하여 파일 업로드 기능을 구현하는 방법을 알아보았습니다. MultipartFormData를 생성하고, MoyaProvider를 생성한 뒤 업로드 요청을 보내는 방식으로 파일을 업로드할 수 있습니다. 이를 참고하여 애플리케이션에 파일 업로드 기능을 추가해보세요.

참고 자료