很多新手第一次看到 req.body === undefined,本质上是:
车进城了,但你没安排拆包裹的人。
Express 常见拆包方式:
const express = require('express');
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));它们分别处理:
express.json():JSON 请求体express.urlencoded(...):表单提交
#1. JSON 请求体
app.use(express.json());
app.post('/roads', (req, res) => {
res.json({
received: req.body
});
});请求:
POST /roads
Content-Type: application/json
{
"name": "中山主路",
"district": "east"
}#2. 表单请求体
app.use(express.urlencoded({ extended: true }));
app.post('/roads/form', (req, res) => {
res.json(req.body);
});#3. 顺序别放错
错误写法:
app.post('/roads', (req, res) => {
res.json(req.body);
});
app.use(express.json());这相当于:
窗口先开始办业务,拆包站还没上岗。