# 使用 Vercel 处理 Node.js 的请求体

在使用 Vercel 部署的 Serverless 函数中解析 Node.js 的请求体。

在本篇指南中,我们将向你展示如何在使用 Vercel (opens new window) 部署的 Serverless 函数 (opens new window)中解析一个 Node.js 的请求体 (opens new window), 而不需要额外导入一个框架,例如 Express。

本篇指南假设请求发送时携带有值是 application/json (opens new window)Content-Type (opens new window) 的请求头。但是,如果需要的话,可以解析更多的内容类型(其他的 Content-Type)。

# 步骤 1: 创建一个函数 (opens new window)

首先,创建一个项目目录,并在其里面创建一个 /api 目录, 接着再 cd 进去:

mkdir req-body && mkdir req-body/api

/req-body 项目内部创建一个 /api 目录。

cd req-body

进入 /req-body 项目目录。

为了说明请求体的解析,请使用以下代码在您的 /api 目录中创建一个 index.js 文件

module.exports = async (req, res) => {
  const { body } = req
  res.send(`Hello ${body.name}, you just parsed the request body!`)
}

这是一个通过使用带有Helper 属性 (opens new window)Node.js (opens new window) 解析请求体的示例。

这个函数接受一个 POST 请求,解析请求体,并在响应中使用来自请求体的数据。

这里的关键部分是第 2 行。Vercel (opens new window) 添加了许多类似 Express 的 helper properties (opens new window),使使用 Node.js 的更加容易。

NOTE: 您可以在博客 (opens new window) 或者 文档 (opens new window) 阅读更多有关 helper 属性 (opens new window)

使用req.body的帮助器,将自动解析传入的request,从而无需第三方库或其他代码来处理 request 正常抵达时候的默认格式 ReadableStream (opens new window)

# 步骤 2: 部署函数 (opens new window)

用一个命令就可以部署您的函数到 Vercel (opens new window)

vercel

使用vercel命令部署应用。现在您已经创建并部署了项目,剩下要做的就是测试它是否有效。

# 步骤 3: 发送请求 (opens new window)

要验证是否正确解析了 JSON,请通过在终端内执行以下代码,使用 curl (opens new window) 向新部署发出 POST 请求:

curl -X POST "https://your-deployments-url.now.sh/api" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Reader"
}'

使用 curl (opens new window) 发出 POST 请求

NOTE: 这里您应该更换成您自己刚刚部署的 URL ,使其与在 Vercel CLI 中为您的部署提供的 URL 匹配。

您将收到类似于以下的回复:

Hello Reader, you just parsed the request body!

发出 POST 请求的示例响应

恭喜,现在您知道如何在 Vercel (opens new window) 使用 Node.js 解析请求请求体了。

# 最后: 理解它是如何工作的 (opens new window)

Node.js (opens new window) 接收到一个请求,请求体(返回体)是 ReadableStream (opens new window) 格式的。

要从 Stream 中获取数据,您需要监听其 dataend 事件。要做到这一点,需要几行代码,而您更希望不要重复。

您可以通过使用 helper 属性 (opens new window) 直接访问请求体中的数据, 因为它已经为您解析了请求体。