Javascript 如何格式化路径,以便在Express.JS中接收通用JSON对象?
下面是Js、Node.Js和Express.Js的一般用法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()会打印{}一
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());。非常感谢!不用担心。谢谢!