如何访问使用nodejs http库发出的请求正文
How to access body of request made with nodejs http library
我正在尝试发出 post 请求传递 json 数据。当请求到达我的快速服务器时,它没有正文。我做错了什么?
const http = require('http');
const req = http.request({
hostname: 'localhost',
port: 8080,
path: '/',
method: 'POST'
}, (res) => {
res.on('end', () => {
//
});
});
req.write(JSON.stringify({ something: 'something' }));
req.end();
const express = require('express');
const app = express();
app.use(express.json());
app.post('/', (req, res) => {
console.log(req.body); // undefined
res.send();
});
app.listen(8080);
我不得不使用nodejs的http库。
你应该:
- 移动您注册 JSON 解析中间件的行,使其出现在您注册
/
处理程序的行之前。按顺序调用处理程序,因此使用您当前的方法,/
将触发并结束链而不到达中间件。
- 在 client-side 代码中添加
Content-Type: application/json
request header 这样 body 解析器就不会跳过它因为它无法识别(未)声明的数据类型。
8bitIcon 可能是正确的。此行为可能是未使用解析请求正文的中间件的结果。查看此post,可能会帮助您解决问题。
谢谢。
我正在尝试发出 post 请求传递 json 数据。当请求到达我的快速服务器时,它没有正文。我做错了什么?
const http = require('http');
const req = http.request({
hostname: 'localhost',
port: 8080,
path: '/',
method: 'POST'
}, (res) => {
res.on('end', () => {
//
});
});
req.write(JSON.stringify({ something: 'something' }));
req.end();
const express = require('express');
const app = express();
app.use(express.json());
app.post('/', (req, res) => {
console.log(req.body); // undefined
res.send();
});
app.listen(8080);
我不得不使用nodejs的http库。
你应该:
- 移动您注册 JSON 解析中间件的行,使其出现在您注册
/
处理程序的行之前。按顺序调用处理程序,因此使用您当前的方法,/
将触发并结束链而不到达中间件。 - 在 client-side 代码中添加
Content-Type: application/json
request header 这样 body 解析器就不会跳过它因为它无法识别(未)声明的数据类型。
8bitIcon 可能是正确的。此行为可能是未使用解析请求正文的中间件的结果。查看此post,可能会帮助您解决问题。
谢谢。