如何访问使用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,可能会帮助您解决问题。

谢谢。