DevGang
Авторизоваться

Усовершенствуйте свой GraphQL API: Освоение загрузки файлов с помощью Yoga GraphQL

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

Ключевые особенности

Бесшовное потребление загруженных файлов

С помощью GraphQL Yoga вы можете без труда использовать загруженные файлы или блобы как стандартные объекты WHATWG File или Blob, аналогичные тем, которые можно найти в API браузера. Такой стандартизированный подход упрощает работу с загруженными файлами, обеспечивая совместимость с различными клиентскими приложениями.

Быстрая интеграция с клиентскими решениями

GraphQL Yoga совместим с любым клиентом, поддерживающим спецификацию GraphQL Upload. Независимо от того, используете ли вы Apollo Client, Relay или другое клиентское решение GraphQL, вы можете легко интегрировать загрузку файлов в рабочий процесс вашего приложения.

Руководство по реализации

Начало работы

Чтобы начать обработку загрузки файлов в GraphQL Yoga, начните с добавления скаляра File в вашу схему. Этот простой шаг заложит основу для удобной обработки загрузки файлов в вашем GraphQL API.

Пример кода

Вот пример реализации, демонстрирующий, как обрабатывать загрузку файлов в GraphQL Yoga:

import { createYoga } from 'graphql-yoga'
import { createServer } from 'http'

// Provide your schema
const yoga = createYoga({
  schema: createSchema({
    typeDefs: /* GraphQL */ `
      scalar File

      type Query {
        greetings: String!
      }

      type Mutation {
        saveFile(file: File!): Boolean!
      }
    `,
    resolvers: {
      Query: {
        greetings: () => 'Hello World!'
      },
      Mutation: {
        saveFile: async (_, { file }: { file: File }) => {
          try {
            const fileArrayBuffer = await file.arrayBuffer()
            await fs.promises.writeFile(
              path.join(__dirname, file.name),
              Buffer.from(fileArrayBuffer),
            )
          } catch (e) {
            return false
          }
          return true
        },
      }
    }
  })
})

// Start the server and explore http://localhost:4000/graphql
const server = createServer(yoga)
server.listen(4000, () => {
  console.info('Server is running on http://localhost:4000/graphql')
})

Тестирование с помощью Curl

После запуска сервера вы можете использовать Curl для тестирования конечной точки. Вот пример команды Curl для тестирования загрузки файлов:

curl --location 'http://127.0.0.1:4000/graphql' \
--form 'operations="{ \"query\": \"mutation ($file: File!) { saveFile(file: $file) }\", \"variables\": { \"file\": null } }"' \
--form 'map="{ \"0\": [\"variables.file\"] }"' \
--form '0=@"mytext.txt"'

Заключение

Следуя этому руководству, вы раскроете весь потенциал загрузки файлов в вашем GraphQL API с помощью Yoga GraphQL. Благодаря бесшовной интеграции и широким возможностям, GraphQL Yoga позволит вам усовершенствовать ваш API с помощью эффективной функциональности загрузки файлов, обеспечивая исключительный пользовательский опыт для вашего приложения.

Источник:

#JavaScript #NodeJS #GraphQL
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу