gpt4 book ai didi

node.js - Node/Express - 用于 PUT 请求的 bodyParser 为空

转载 作者:搜寻专家 更新时间:2023-10-31 22:42:33 25 4
gpt4 key购买 nike

我在 bodyParser 中遇到 Express 错误,无法解析任何 PUT 请求...我的配置是这样设置的:

 app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.query());
app.use(app.router);

但是,每次我向端点发出 PUT 请求时,req.body 都会返回“未定义”。

我试过通过 Chromes REST 控制台发出请求,也通过 jQuery ajax 请求发出请求,如下所示:

 $.ajax({
url: 'https://localhost:4430/api/locations/5095595b3d3b7b10e9f16cc1',
type: 'PUT',
data: {name: "Test name"},
dataType: 'json'
});

有什么想法吗?

最佳答案

您还需要将 Content-Type 设置为 application/json。您的 jQuery 请求应该是:

$.ajax({
url: 'https://localhost:4430/api/locations/5095595b3d3b7b10e9f16cc1',
type: 'PUT',
contentType: 'application/json',
data: JSON.stringify({name: "Test name"}),
dataType: 'json'
});

否则,正文解析器将不会尝试解析正文。

编辑:这是我的测试代码

  1. 运行快速测试

  2. app.js中添加一个/test路由:

app.all('/test', routes.test);

routes/index.js:

exports.test = function (req, res) {  console.log(req.body);  res.send({status: 'ok'});};
  1. 在 index.jade 中链接 jQuery 和以下脚本:
$(function () {  $('#test').click(function () {    $.ajax({      url: '/test',      type: 'PUT',      contentType: 'application/json',      data: JSON.stringify({name: "Test name"}),      dataType: 'json'    });  });});

当我运行它时,我得到以下日志:

Express server listening on port 3000GET / 200 26ms - 333GET /stylesheets/style.css 304 2msGET /javascripts/test.js 304 1ms{ name: 'Test name' }PUT /test 200 2ms - 20

关于node.js - Node/Express - 用于 PUT 请求的 bodyParser 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13602865/

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