Подробное руководство по загрузке файлов в GraphQL: множество методов с примерами кода

В современной веб-разработке загрузка файлов является обычным требованием для многих приложений. Когда дело доходит до GraphQL, обработка загрузки файлов может немного отличаться от традиционных REST API. В этом подробном руководстве мы рассмотрим различные методы загрузки файлов в GraphQL, а также примеры кода для демонстрации каждого подхода. Независимо от того, являетесь ли вы бэкэнд-разработчиком или внешним разработчиком, работающим с GraphQL, эта статья даст вам знания для эффективной обработки загрузки файлов.

  1. Кодировка Base64.
    Один из самых простых способов загрузки файлов в GraphQL — это кодирование содержимого файла с помощью Base64 и отправка его в виде строки в мутации. Затем сервер может декодировать строку Base64 и соответствующим образом обработать файл. Вот пример:

«base64_encoded_string») {
id
имя файла
url

  1. Данные составной формы.
    Другой популярный подход — использование данных составной формы для отправки файлов в мутациях GraphQL. Этот метод широко поддерживается библиотеками GraphQL и обеспечивает лучшую производительность по сравнению с кодированием Base64. Вот пример использования API FormDataв JavaScript:
const formData = new FormData();
formData.append('file', file);
fetch('/graphql-endpoint', {
  method: 'POST',
  body: formData,
});
  1. Сервер загрузки Apollo.
    Если вы используете сервер Apollo, вы можете использовать пакет apollo-upload-serverдля эффективной обработки загрузки файлов. Этот пакет расширяет возможности Apollo Server для поддержки загрузки файлов с использованием данных составных форм. Вот пример:
const { ApolloServer } = require('apollo-server');
const { ApolloServerPluginFileUpload } = require('apollo-server-core');
const server = new ApolloServer({
  plugins: [ApolloServerPluginFileUpload()],
  // ...
});
  1. Скаляры 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 для эффективной обработки загрузки файлов.