如何格式化路径以便在Express.JS中接受通用JSON对象?

How does one format a path in order to take in a generic JSON object in Express.JS?

本文关键字:JSON 对象 JS 路径 格式化 Express      更新时间:2023-09-26

下面是Js, Node.js和Express.js的通用用法

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

我正在发送当前的curl命令

curl -v -H "Content-Type: application/json" -X GET -d '{"name":"me", "phone":"123"}' localhost:1337/persons

和我的console.log(),我假设将打印{}一个空容器。现在从阅读Express.js文档,我知道我可以安排URL接受参数:/persons/:person/id/:id,并使我的JSON输入有效,但我想知道的是,如果我可以采取任何对象JSON由用户传递?换句话说,如果json有一个额外的字段;这需要一个全新的快递处理员吗?如果这是不可能的,这是由于安全问题还是这真的只是糟糕的设计?由于

正如man curl所说,-d--data将数据添加到请求体中。

-d,——data

(HTTP)向HTTP服务器发送POST请求中指定的数据,就像浏览器在用户填写HTML时所做的一样表单并按下提交按钮。这将导致旋度通过使用content-type将数据传输到服务器应用程序/x-www-form-urlencoded。

-d,——data与——data-ascii相同。——data-raw几乎相同,但没有对@字符的特殊解释。发布如果数据是纯二进制的,则应该使用——Data -binary选项。要对表单字段的值进行url编码,可以使用——data-urlencode。

所以,您需要一个像body-parser这样的包来解析它。

npm install body-parser一样安装它,并将这些行添加到你的代码中,你的问题就解决了。

var bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

注意:

我建议使用-X POST代替GET在你的curl和app.post()在你的代码,如果你想发送一个主体有效载荷。

还请注意打字错误:curl是/persons,但代码有app.get('/person',更正其中任何一个