GraphQL-js 서버에서 파일 업로드를 처리하는 것은 일반적으로 RESTful API에서 하는 것보다 조금 복잡합니다. 하지만 TypeScript를 사용한다면 이를 처리하기 쉬울 수 있습니다.
이번 글에서는 GraphQL-js 서버에서 파일 업로드를 처리하는 방법과 TypeScript를 이용하여 타입 선언을 하는 방법에 대해 알아보겠습니다.
1. GraphQL 파일 업로드 지원 패키지 설치
가장 먼저 해야 할 일은 GraphQL 서버에서 파일 업로드를 지원하는 패키지를 설치하는 것입니다. 여기서는 graphql-upload
패키지를 사용하도록 하겠습니다.
$ npm install graphql-upload
2. GraphQL Schema 수정
업로드할 파일에 대한 GraphQL 스키마에 대한 수정이 필요합니다. 이를 위해서 graphql-upload
패키지를 사용하여 GraphQLUpload
타입을 스키마에 추가해야 합니다.
import { GraphQLUpload } from 'graphql-upload';
const typeDefs = `
scalar Upload
type Mutation {
uploadFile(file: Upload!): String
}
`;
3. Resolver 수정
업로드된 파일을 처리하기 위한 리졸버를 작성해야 합니다. TypeScript에서 파일을 다룰 때, 리졸버에서는 FileUpload
타입을 사용해야 합니다.
import { FileUpload } from 'graphql-upload';
const resolvers = {
Mutation: {
uploadFile: async (_, { file }: { file: Promise<FileUpload> }) => {
const uploadedFile = await file;
// 파일 처리 로직 작성
return '파일이 업로드 되었습니다.';
},
},
};
위의 예시에서 FileUpload
타입은 graphql-upload
패키지에서 제공됩니다.
이제 파일 업로드를 처리하는 GraphQL-js 서버를 만들기 위한 기본적인 설정이 끝났습니다. TypeScript를 사용하면 타입을 명확하게 지정하여 파일 업로드를 보다 안정적으로 처리할 수 있습니다.
이 외에도 파일 저장 경로나 파일명 중복 처리 등 다양한 부분에 대한 고려가 필요하겠지만, 이는 상황에 맞게 유연하게 처리해주어야 합니다.
더 많은 자세한 내용과 예제 코드에 대해서는 graphql-upload
패키지의 공식 문서를 참고해주세요.
이상으로 TypeScript를 이용한 GraphQL-js 서버에서의 파일 업로드 처리 방법에 대해 알아보았습니다.