GraphQL 中如何获得二进制文件

随着前端技术的快速发展,许多 Web 应用程序都遇到了需要实时获取二进制文件的需求。例如,音频和视频数据在大多数情况下都需要以二进制格式传输,这需要在前端代码中使用 GraphQL 进行数据请求时的特定处理。

在本文中,我们将探讨如何在 GraphQL 中请求和响应二进制数据,并提供详细的学习和指导意义。

GraphQL 中的二进制文件

在本文中,我们将讨论如何在 GraphQL 中处理二进制文件,这包括图像、音频和视频等不可读文本。在大多数情况下,这些文件需要作为二进制数据传输。在传输和接收这些数据时,您需要知道它们的 MIME 类型。以下是一些常见的 MIME 类型:

  • 图像:image/png, image/jpeg, image/gif
  • 音频:audio/mp3, audio/wav, audio/mpeg
  • 视频:video/mp4, video/ogg, video/webm

了解 MIME 类型是处理二进制数据时非常重要的,因为它们告诉您如何解析响应并正确处理文件。

从 GraphQL API 中获取二进制文件

在 GraphQL API 中获取二进制文件的关键是使用适当的响应类型。在许多情况下,您需要使用 application/octet-stream MIME 类型,这是一个通用的 MIME 类型,适用于不属于其他类型的数据。

以下是一个示例查询,其中 downloadUrl 字段将返回一个文件的二进制数据:

----- -
  -------------------- --------------------------------- -
    ----
    ----
  -
-

在上面的查询中,getFile 会返回一个包含二进制数据的对象,并指定数据的 MIME 类型。

对于文件的下载和解析,您可以使用 fetch API 从 GraphQL API 中获取响应,并使用下面的代码将其解析为二进制数据:

--------------------- -
  ------- -------
  -------- - --------------- ------------------ --
  ----- ---------------- ------ ---------------------- --------------------------------- ------------- --
--
  ---------------- -- ----------------
  ------------ -- -
    -- -------
  ---

在上面的代码中,我们使用解析响应的 blob() 方法将响应转换为二进制数据,并继续处理它。

使用 mutations 上传二进制文件

在许多情况下,您需要在 GraphQL API 中上传二进制文件。为了上传文件,GraphQL 提供了 mutations

以下是一个示例 mutation,用于向服务器上传一个带有二进制数据的文件:

-------- -
  ---------------- -
    ----- ------------
    ----- -----------
    ----- --------------------------
  -- -
    ---
  -
-

在上面的 mutation 中,我们使用 uploadFile 将二进制文件上传到服务器,并指定文件的名称、类型和二进制数据。服务器将响应一个包含 URL 的对象,指向刚上传的文件。

要完成上传,可以使用以下 JavaScript 代码:

----- ---- - --- ---------- ------------- - ----- ----------- ---

--------------------- -
  ------- -------
  -------- - --------------- ------------------ --
  ----- ---------------- ------ --------- ----------------- - ----- ------------- ----- ------------ ----- -------------------------- -- ------- --
--
  ---------------- -- ----------------
  ------------ -- -
    ----- --- - --------------------
    ----- -------- - --- -----------
    ----------------------- ------

    ---------- -
      ------- ------
      ----- --------
    --
      ---------------- -- -
        -- ----
      ---
  ---

在上面的代码中,我们创建了一个 File 对象,将其包装在提交表单的 FormData 中,使用上传文件的 URL 初始化了一个新的 fetch 请求,并告诉服务器使用 PUT 方法传输数据。服务器将响应上传的文件,并根据需要进行处理。

结论

使用 GraphQL 处理二进制文件需要特殊的处理和理解 MIME 类型。本文中提供了许多示例代码和指导,可帮助您了解如何使用 GraphQL 有效地传输和处理二进制数据。请记住,正确处理 MIME 类型是确保文件正确传输和处理的关键。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6719a362ad1e889fe2321832