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

Javascript 如何格式化路径,以便在Express.JS中接收通用JSON对象?,javascript,json,node.js,http,express,Javascript,Json,Node.js,Http,Express,下面是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()会打印{}一

下面是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有一个额外的字段怎么办;这需要一个全新的express处理程序吗?如果这是不可能的,这是由于安全问题还是这只是一个非常糟糕的设计?感谢因为
man curl
-d
-data
将数据添加到请求主体中

-d,--data

(HTTP)将POST请求中的指定数据发送到HTTP服务器, 与用户填写HTML时浏览器所做的相同 表单并按下提交按钮。这将导致curl通过 使用内容类型将数据发送到服务器 application/x-www-form-urlencoded。与-F、-form相比

-d、 --数据与--数据ascii相同--原始数据几乎相同,但对@字符没有特殊解释。张贴 如果数据是纯二进制的,则应改为使用--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
,在代码中使用
app.POST()


另外请注意输入错误:curl是指向
/persons
,但代码有
app.get(“/person”,
纠正其中一个问题。

我的答案解决了问题吗?非常抱歉没有回来;到目前为止还无法测试它!它确实有效!我已经包括了所有其他内容,唯一没有的一行是=app.use(bodyParser.json());。非常感谢!不用担心。谢谢!