Javascript 如何在使用CURL传递的NodeJS中检索POST数据?
我试图用CURL命令将一些参数传递给我的localhost(使用nodejs),但是我的localhost没有正确读取它们 我正在向本地主机发送POST请求,如下所示:Javascript 如何在使用CURL传递的NodeJS中检索POST数据?,javascript,node.js,express,Javascript,Node.js,Express,我试图用CURL命令将一些参数传递给我的localhost(使用nodejs),但是我的localhost没有正确读取它们 我正在向本地主机发送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/pla
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
...
});
我尝试使用如下节点检索我的数据参数:
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\u name
,old\u db
,new\u db
都是未定义的
而且,req.body
是一个空对象{}
而req.url
只是/auto
如何检索在节点中随curl程序传递的参数
==================
版本
- nodejsv6.5.0
- expressjsv3.14.0
- CURL v7.22.0
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
尝试添加json主体解析器中间件
const bodyParser = require('body-parser');
app.use(bodyParser.json());
在@J.Chen和@hanshenrik的帮助下,它终于开始工作了 如果我将CURL请求中
--data
的格式更改为JSON对象(如{'key':'value',…}
),而不是字符串(key=value&…
)
如果我从CURL请求中删除-H“Accept:text/plain”-H“Content Type:application/json”
然后,我的nodeJS应用程序最终看到req.body
中的参数
因此,我的最终代码是:
curl --noproxy localhost
-X POST
-d "{'db_name':'auto','old_db':'Lab.tar.gz','new_db':'627999E00_10.tgz'}"
http://localhost:8084/auto
我的NodeJS代码是:
app.post('/auto',function(req,res){
var parseMe = Object.keys(req.body)[0];
var parsedParams = JSON.parse(parseMe);
var db_name=parsedParams.db_name;
var old_db=parsedParams.old_db;
var new_db=parsedParams.new_db;
...
});
是否使用(express.bodyParser())一开始做什么?@J.Chen我已经有了:/I将把这些信息添加到关于
app.use(express.urlencoded())的问题中代码>?我不知道如何读取节点中的数据,但数据在帖子正文中,以application/x-www-urlencoded格式编码。如果您找到请求正文,请参阅此处以进行解析@J.Chen我现在就可以开始工作了!你是对的,对象方法有帮助!我删除了CURL命令中的两个-H
选项,并将其更改为JSON格式,然后在服务器端解析JSON!现在可以工作了,非常感谢^-^顺便说一句,我认为express.bodyParser不受欢迎。对不起,我已经在那里登了这行广告。原来是我的CURL命令出了问题!谢谢你!