npm包 @yubeio/apollo-absinthe-graphql-upload 使用教程

阅读时长 7 分钟读完

简介

在前端开发中,GraphQL是一个非常常用的数据查询语言,而@yubeio/apollo-absinthe-graphql-upload则是一个用于上传文件的GraphQL扩展,可以代替传统的文件上传方式,通过GraphQL的查询和变异来实现文件上传。

本文将详细介绍@yubeio/apollo-absinthe-graphql-upload的使用方法和注意事项,以便您更好地了解和掌握该工具的使用。

安装

在使用@yubeio/apollo-absinthe-graphql-upload前,您需要使用npm进行安装,首先打开您的终端,使用以下命令进行安装:

引入 @yubeio/apollo-absinthe-graphql-upload

在您的GraphQL项目中,您需要导入@yubeio/apollo-absinthe-graphql-upload,并且使用该工具对graphqlHTTP进行扩展,以实现文件上传。

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

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

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

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

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

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

这里我们使用了graphqlUploadExpress对graphqlHTTP进行扩展,并传入了maxFileSizemaxFiles两个参数,以便控制上传文件的大小和数量。

文件上传

在已经完成了对GraphQLHTTP的扩展之后,我们就可以在GraphQL中进行文件上传了。在进行文件上传之前,您需要定义一个上传类型,并且使用GraphQLUpload来将其注册到GraphQL中。

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

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

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

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

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

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

这里我们定义了两个mutation函数singleUploadmultipleUpload,并且都需要接收一个文件上传参数来完成文件上传的操作。在函数中我们使用了createReadStream来获取上传文件的数据流,并且使用该流来完成文件上传的操作。

示例

以下是使用@yubeio/apollo-absinthe-graphql-upload进行文件上传的完整例子,您可以在自己的开发环境中进行测试。

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

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

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

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

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

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

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

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

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

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

您可以使用Apollo-Server或者其他GraphQLServer进行测试,在测试过程中如果遇到问题,您可以在官方文档中查看更详细的使用方法。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562cb81e8991b448e0148

纠错
反馈