npm包zan-co-body 使用教程

阅读时长 14 分钟读完

在进行前端web开发中,处理请求体数据是一个非常常见的任务。Node.js中有很多用于解析请求体数据的包,但大多数都无法兼顾简洁性和可扩展性。在这份教程中,我们将来介绍npm包zan-co-body的使用,帮助大家轻松地进行请求体数据解析。

zan-co-body介绍

zan-co-body 是一个轻量级的Node.js请求体数据处理框架。它使用Koa的Generator-based中间件语法,同时也支持Async/Await语法。zan-co-body拥有简洁而易于使用的API,可处理JSON, form, text以及multipart/form-data数据格式。

zan-co-body安装

使用 npm 进行 zan-co-body 的安装:

zan-co-body使用

使用 zan-co-body 进行请求体处理的基本方法如下:

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

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

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

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

在上面的示例中,用 zan-co-body 包来解析请求体,然后将解析后的请求体数据以 ctx.request.body 的形式挂载在Koa单实例的上下文 ctx中。这意味着无论我们的请求体是何种格式,我们都可以通过在 ctx.request.body中访问到请求体数据。同时也因为在中间件链的最后一步,我们将回复一个回应请求。

zan-co-body API

zan-co-body 的 API 是非常灵活的。下面是一些常用的 API,使用及示例代码:

json

解析非严格式应用程序/ JSON编码请求体数据:

  • "json":使用JSON.parse()解析请求体数据。
-- -------------------- ---- -------
----- -------- - --------------------------------
----- ------ - -----------------
----- -- - -------------

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

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

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

      ------ ------------ -- -
        ----- ---- - -----------------------------------
        ----- --- - ------ --------------- ---- - -------- ---------------- -------------------- ------- ------- ---- -- ------ -- -- ----
        --------------------- ----------
      ---
    --
  --
--
form

解析x-www-form-urlencoded 编码请求体数据。

  • "form" - 用于在解析请求体数据时启用此解析器。
-- -------------------- ---- -------
----- -------- - --------------------------------
----- ------ - -----------------
----- -- - -------------

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

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

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

        --------------------- ----------
      ---
    ---
  ---
---
text

将流解析为字符串。

  • "text":用于在解析请求体数据时启用此解析器。
-- -------------------- ---- -------
----- -------- - --------------------------------
----- ------ - -----------------
----- -- - -------------

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

      ------ ------------ -- -
        ----- --- - ------ --------------- ---- --------- ---------------- -------------- ------- ------- ----- ------- ------ -- -- -- ---
        --------------------- ----------
      ---
    --
  --
--
multipart

解析一个 multipart/form-data 请求体。该请求体部分必须是具有Content-Disposition首部的part的集合。

  • "multipart[$]"
  • "multipart/related"
  • "multipart/alternative"
-- -------------------- ---- -------
----- ------------- - -------------------------------------
----- ------ - -----------------
----- -- - -------------
----- ---- - ---------------
----- -- - -------------

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

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

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

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

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

以上 API 中提到的请求体数据格式,我们将在下面的示例中进一步解释。

在Koa2中使用 zan-co-body

在Koa2中,API和Koa1稍有不同,需要使用轻量级的Koa中间件koaify包装器来使得它们能够与Koa2兼容。

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

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

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

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

在这个例子中,我们添加了multipart选项为true。通过运行上面的代码,Koa2实例就可以使用zan-co-body所提供的中间件。

示例代码

为了进一步解释API,我们提供了以下例子代码。

以下是一个简单的示例代码,它将展示如何使用Koa中间件来解析不同的请求体数据格式。

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

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

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

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

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

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

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

在上面的示例代码中,我们使用路由器创建了3个路由,每个路由都有不同的数据格式。

我们现在来看看如何发送请求。使用Swagger,Postman或cURL等工具都是不错的选择。

  • 以JSON格式发送请求

POST http://localhost:3000/json

Content-Type: application/json

Request Body:

响应体会返回与请求体相同的对象。

  • 以form格式发送请求

POST http://localhost:3000/form

Content-Type: application/x-www-form-urlencoded

Request Body:

发送的请求体数据解析成了一个JavaScript对象,并返回与请求体相同的数据。

  • 以multipart格式发送请求

POST http://localhost:3000/multipart

Content-Type: multipart/form-data

Request Body:

  • Request Body解析成JavaScript对象,并返回与请求体相同的数据。

    body: { "data": { "photo": { "name": "example.png", "type": "image/png", "size": 8, "path": "/var/folders/1l/v8jlz6t50bj9fcx2x7zvwwtswwyj7z/T/upload_c3ed393e717d50da21f129134e6285de", "mtime": "2021-07-06T18:23:03.275Z" } } }

(注:示例代码中的keepExtensions选项设置为true,可以始终保留上传后文件的拓展名。)

总结

zan-co-body 是处理Node.js应用程序请求体数据的一种非常好用的包。它的API简洁而灵活,易于使用和扩展。相比其他请求体数据处理框架,zan-co-body内置了JSON、form、text和multipart等常见的请求体数据解析器,可以对不同的请求体进行解析,提高了应用程序的可用性。

在本教程中,我们介绍了zan-co-body的安装和使用,以及在Koa2中如何使用它。同时,我们还展示了一些示例代码,希望本文可以为大家提供帮助。

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

纠错
反馈