express.json() 和 express.urlencoded({ extended: true }) 作用

express.json() 作用

让我们能够通过 request.body 拿到请求体中 json 格式的数据。

express.json() 用于解析客户端发送的 JSON 格式的请求体数据,将其转换为 JavaScript 对象,并将其赋值给 req.body。

通常用于处理客户端通过 AJAX 发送的请求。

如果不使用这个中间件,我们也可以手动处理请求体 body 中的数据,只不过比较麻烦。

const express = require('express');
const app = express();

app.post('/users', (req, res) => {
  let body = '';
  req.on('data', (chunk) => {
    body += chunk.toString();
  });
  req.on('end', () => {
    try {
      const data = JSON.parse(body);
      // 处理请求数据...
      res.send('User created successfully');
    } catch (error) {
      res.status(400).send('Invalid JSON format');
    }
  });
});

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});

express.urlencoded({ extended: true }) 作用

解析客户端发送的 URL 编码格式的请求体数据,将其转换为 JavaScript 对象,并将其赋值给 req.body。

通常用于处理通过表单提交的请求。

它长这样:

<form action="/submit-form" method="post">
  <label for="name">Name:</label>
  <input type="text" id="name" name="name" />

  <label for="email">Email:</label>
  <input type="email" id="email" name="email" />

  <label for="message">Message:</label>
  <textarea id="message" name="message"></textarea>

  <input type="submit" value="Submit" />
</form>
POST /example HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded

name=John%20Doe&age=30&email=john%40example.com

在上面的请求体中,name 的值是 John Doe,age 的值是 30,email 的值是 john@example.com。

其中,空格被编码为 %20,@ 被编码为 %40。

({ extended: true }) 的作用是处理深层嵌套对象。

express.json 和 express.urlencoded 相同点

都将请求体数据解析为 JavaScript 对象,并将其赋值给 req.body。

什么是 URL 编码

URL 编码只对特殊字符编码,普通的字母、数字、大部分符号不转译。

为什么不直接使用 ASCII 码,因为这样会导致不够直观,清晰,容易引起混淆。

字符ASCII 码URL 编码
空格32%20
&38%26
=61%3D
#35%23
+43%2B
%37%25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值