gpt4 book ai didi

javascript - request.body 在 Node.js、express 和 body 解析器中为空

转载 作者:行者123 更新时间:2023-12-03 03:49:53 25 4
gpt4 key购买 nike

我正在尝试向我的 Node 服务器“发布”请求。

以下是 xhttp 请求。

let parcel = {
userId: userId, //string
unitid: unitid, //string
selections: selections //array
};

//Call to the Server
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", transferComplete);

oReq.open("GET", "http://node.server.com/interaction", true);
//oReq.setRequestHeader('Content-Type', 'application/json');
oReq.send(parcel);

function transferComplete(evt) {
console.log(this.responseText);
}

这是服务器代码

const express = require('express');
const bodyParser = require('body-parser');
var cors = require('cors');

let app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

const interaction = require('./routes/interaction');

app.use('/interaction', interaction);

app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});

app.set("port", process.env.PORT || 5000);

var server = app.listen(app.get('port'), () => {
console.log("server is started");
});

以及交互路由器

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
console.log(req.body)
res.send(req.body);
});

module.exports = router;

请求收到响应,但 console.log(req.body) 返回一个空对象。我什至检查了“req”对象。该对象中的主体 Node 也是空的。我哪里错了。我可以在服务器中哪里接收我的包裹对象?

最佳答案

您没有在客户端发送任何正文,因此您在服务器上没有收到它也就不足为奇了。

您发出的 GET 请求根据定义没有正文。

尝试使用 curl 发出带有正文的请求,看看是否可以进入服务器 - 这样您就应该消除 Express 或正文解析器出现问题的可能性。确保您使用正确的内容类型。

如果您想发送正文,则:

  1. 使用路由处理程序中支持的 HTTP 方法(例如 POST)
  2. 在客户端使用相同的 HTTP 方法
  3. 实际上正确地发送了一些内容

如果您在直接使用 XMLHttpRequest 时遇到问题(它的 API 很糟糕),那么可以使用 jQuery、browser-request、SuperAgent、Axios、Got、Request、Reqwest 等:

此外,要调试请求中实际发送的数据,请参阅浏览器开发人员工具中的“网络”选项卡,并要深入了解正在发生的情况,请使用 netcat:

$ nc -lp 3333

它监听端口 3333(在本例中),并将打印包含所有 header 和正文的整个请求。例如访问http://localhost:3333/xxx在浏览器中可能会打印:

GET /xxx HTTP/1.1
Host: localhost:3333
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/59.0.3071.109 Chrome/59.0.3071.109 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8,pl;q=0.6
Cookie: io=HQz0J7NwYj76pKf_AAAD

请注意,它本身不会返回响应,并且仅适用于单个请求,因此您需要重新启动 netcat 命令才能再次测试它。

关于javascript - request.body 在 Node.js、express 和 body 解析器中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45211757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com