【发布时间】:2017-12-26 20:09:31
【问题描述】:
我正在尝试使用 CURL 命令将一些参数传递给我的本地主机(使用 nodejs),但我的本地主机没有正确读取它们。
我正在向我的本地主机发出 POST 请求,如下所示:
curl --data "db_name=auto&old_db=Lab.tar.gz&new_db=627999E00_10.tgz"
--noproxy localhost
-H "Accept: text/plain"
-H "Content-Type: text/plain"
-X POST http://localhost:8084/auto
我尝试使用这样的节点检索我的数据参数:
app.post('/auto',function(req,res){
var db_name=req.body.db_name; //undefined
var old_db=req.body.old_db; //undefined
var new_db=req.body.new_db; //undefined
...
});
但是db_name,old_db,new_db 总是undefined。
另外,req.body 是一个空对象 {}
而req.url 就是/auto
如何在 node 中检索我通过 curl 程序传递的参数?
================== 版本
- NodeJS v6.5.0
- ExpressJS v3.14.0
- CURL v7.22.0
================== 更新
我的 ExpressJs 配置如下:
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.urlencoded());
app.use(app.router);
app.use(express.static(_path.join(__dirname, '..', 'Client')));
我还尝试了一些其他卷曲变化:
curl --noproxy localhost
-H "Accept: text/plain"
-H "Content-Type: application/json"
-X POST
-d "{'db_name':'auto','old_db':'Lab.tar.gz','new_db':'627999E00_10.tgz'}"
http://localhost:8084/auto
【问题讨论】:
-
把
app.use(express.bodyParser());放在开头有什么作用吗? -
@J.Chen 我已经知道了:/ 我会将该信息添加到问题中
-
app.use(express.urlencoded());呢? -
我不知道如何读取节点中的数据,但数据在 POST 正文中,以 application/x-www-urlencoded 格式编码。如果您找到请求正文,请参阅此处以解析它stackoverflow.com/a/8486188/1067003
-
@J.Chen 我现在开始工作了!你是对的,对象方法有帮助!我把CURL命令中的两个
-H选项去掉,改成JSON形式,然后在服务端解析JSON!现在可以使用了,非常感谢^-^
标签: javascript node.js express