gpt4 book ai didi

javascript - 使用 jQuery ajax 方法的简单expressjs PUT 处理程序

转载 作者:行者123 更新时间:2023-12-02 16:33:27 25 4
gpt4 key购买 nike

我正在构建一个 Web 应用程序,该应用程序使用 REST API 与服务器进行通信,该应用程序使用 Expres.js 在 Node.js 中构建。问题是我似乎无法读取 PUT 请求中的请求正文。我的客户端代码:

$.ajax({
url: "/api/model/"+this.database,
type: "PUT",
contentType: "application/json",
data: this.model.exportJSON(),
success: function(data){
console.log(data);
}
});

和服务器端代码(仅重要部分):

//in the main file
var express = require("express");
var app = express();

var model = require("./apis/model");

app.put("/api/model/:model", model.put);

app.listen(8000);

//in the module
module.exports = {
put: function(req, res){
console.log(req.body);
res.json({"hello": "world"});
}
};

模型上的exportJSON方法生成一个对象,不是任何空的东西,但在服务器端console.log上我得到undefined,我做错了什么?

编辑:Chrome 开发者控制台显示数据发送得很好,因此它必须是服务器端的内容

最佳答案

因为您要发送“application/json”内容类型,所以需要添加 body-parser 中间件:

$ npm install body-parser

然后这样使用它:

//in the main file
var express = require("express");
var app = express();
var body = require('body-parser');

app.use(body.json());

app.put("/api/model/:model", function (req, res){
console.log(req.body);
res.json({"hello": "world"});
});

app.listen(8000);

然后提出请求

$ curl -i -H "Content-Type: application/json" -X PUT -d '{ "key": "value" }' http://localhost:8000/api/model/foo

这将记录

{ "key" : "value" }

确保在定义路由之前定义 app.use(body) 调用。

关于javascript - 使用 jQuery ajax 方法的简单expressjs PUT 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28115761/

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