[swift] 스위프트 아폴로를 사용한 파일 업로드 구현 방법

스위프트 언어를 사용하여 파일 업로드를 구현하는 방법에 대해 알아보겠습니다. 이번 예제에서는 아폴로(Apollo)라는 GraphQL 클라이언트 라이브러리를 사용하여 파일 업로드를 처리할 것입니다.

아폴로(Apollo)

아폴로는 GraphQL을 위한 클라이언트 라이브러리로, 서버와 통신할 때 Graphql 쿼리문을 보내고 결과를 받아올 수 있습니다. 아폴로를 사용하면 파일 업로드를 간편하게 처리할 수 있습니다.

파일 업로드 구현 방법

  1. 먼저 아폴로를 프로젝트에 추가합니다. Podfile에 다음과 같이 아폴로를 추가합니다:
pod 'Apollo-ios', '~> 0.30'
  1. 아폴로를 import 합니다.
import Apollo
  1. GraphQL 스키마에 파일을 업로드할 수 있는 매개변수를 정의합니다. 예를 들어, 다음과 같은 스키마를 가정해 봅시다:
type File {
  id: ID!
  name: String!
  url: String!
}

type Mutation {
  uploadFile(file: Upload!): File!
}
  1. 업로드할 파일을 선택하고 아폴로 client를 초기화합니다.
let fileURL = URL(fileURLWithPath: "파일 경로")
let fileData = try Data(contentsOf: fileURL)

let apollo = ApolloClient(url: URL(string: "https://api.example.com/graphql")!)
  1. GraphQL mutation을 작성하여 파일을 업로드합니다.
let fileUploadMutation = FileUploadMutation(file: GraphQLFile(fileName: "파일 이름", mimeType: "파일 MIME 타입", data: fileData))

apollo.perform(mutation: fileUploadMutation) { [weak self] result in
    // 업로드 완료 후 처리할 로직을 작성합니다.
}
  1. 업로드된 파일의 정보인 id, name, url을 사용할 수 있습니다.
if let file = result.data?.uploadFile {
    print("업로드된 파일 정보:")
    print("ID: \(file.id)")
    print("이름: \(file.name)")
    print("URL: \(file.url)")
}

이렇게 아폴로를 사용하여 파일 업로드를 구현할 수 있습니다. 아폴로를 활용하면 GraphQL과의 통신을 간단하게 처리할 수 있으므로 여러 서비스에서 파일 업로드 기능을 구현할 때 유용합니다.

참고 자료