如何格式化一个path,以便接收Express.JS中的通用JSON对象?
以下是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并使我的JSONinput有效,但我想知道的是,如果我可以采取任何对象JSON传递给用户? 换句话说,如果我的json有一个额外的领域呢? 这是否需要一个全新的快递处理程序? 如果这是不可能的,这是由于安全问题还是这只是非常糟糕的devise? 谢谢
正如man curl
所说, -d
或--data
将数据添加到请求的主体中。
-d, – 数据
(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像浏览器在用户填写HTML表单并按下提交button时所做的一样。 这将导致curl使用内容typesapplication / x-www-form-urlencoded将数据传递给服务器。 比较-F,–form。
-d,–data与–data-ascii相同。 –data-raw几乎是一样的,但没有@字符的特殊解释。 要发布纯二进制数据,您应该使用–data-binary选项。 要对表单字段的值进行URL编码,您可以使用–data-urlencode。
所以,你需要一个像body-parser
这样的包来parsing它。
像npm install body-parser
一样安装它,并将这些行添加到您的代码中,您的问题将得到解决。
var bodyParser = require("body-parser"); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true }));
注意:
如果你想发送主体有效负载,我build议在你的代码中使用-X POST
而不是GET
来代替curl和app.post()
。
另外请注意错字:curl是对/persons
但代码有app.get('/person',
更正其中任何一个。