В современной веб-разработке загрузка файлов является обычным требованием для многих приложений. Когда дело доходит до GraphQL, обработка загрузки файлов может немного отличаться от традиционных REST API. В этом подробном руководстве мы рассмотрим различные методы загрузки файлов в GraphQL, а также примеры кода для демонстрации каждого подхода. Независимо от того, являетесь ли вы бэкэнд-разработчиком или внешним разработчиком, работающим с GraphQL, эта статья даст вам знания для эффективной обработки загрузки файлов.
- Кодировка Base64.
Один из самых простых способов загрузки файлов в GraphQL — это кодирование содержимого файла с помощью Base64 и отправка его в виде строки в мутации. Затем сервер может декодировать строку Base64 и соответствующим образом обработать файл. Вот пример:
«base64_encoded_string») {
id
имя файла
url
- Данные составной формы.
Другой популярный подход — использование данных составной формы для отправки файлов в мутациях GraphQL. Этот метод широко поддерживается библиотеками GraphQL и обеспечивает лучшую производительность по сравнению с кодированием Base64. Вот пример использования APIFormDataв JavaScript:
const formData = new FormData();
formData.append('file', file);
fetch('/graphql-endpoint', {
method: 'POST',
body: formData,
});
- Сервер загрузки Apollo.
Если вы используете сервер Apollo, вы можете использовать пакетapollo-upload-serverдля эффективной обработки загрузки файлов. Этот пакет расширяет возможности Apollo Server для поддержки загрузки файлов с использованием данных составных форм. Вот пример:
const { ApolloServer } = require('apollo-server');
const { ApolloServerPluginFileUpload } = require('apollo-server-core');
const server = new ApolloServer({
plugins: [ApolloServerPluginFileUpload()],
// ...
});
- Скаляры GraphQL:
Скаляры GraphQL — это пользовательские скалярные типы, которые позволяют вам определять собственные типы ввода и вывода. Внедрив собственный скаляр для загрузки файлов, вы можете беспрепятственно обрабатывать загрузку файлов в своей схеме GraphQL. Вот пример использования пакетаgraphql-upload:
const { GraphQLUpload } = require('graphql-upload');
const typeDefs = `
scalar Upload
type Mutation {
uploadFile(file: Upload!): File
}
`;
const resolvers = {
Upload: GraphQLUpload,
Mutation: {
uploadFile: (_, { file }) => {
// Handle file upload logic
},
},
};
В этой статье мы рассмотрели различные методы обработки загрузки файлов в GraphQL. От кодировки Base64 и данных составных форм до специализированных библиотек и пользовательских скаляров — существует множество подходов на выбор в зависимости от ваших конкретных требований. Реализуя эти методы, вы можете предоставить своим приложениям на основе GraphQL возможность беспрепятственно обрабатывать загрузку файлов. Будьте впереди в современной веб-разработке, используя возможности GraphQL для эффективной обработки загрузки файлов.