使用请求模块在 Node.js 中发送 URL 编码的参数
Send URL-encoded parameters in Node.js using request module
我正在尝试 create a new paste using the PasteBin API 使用 request
模块,如下所示:
var request = require("request");
request({
url : "http://pastebin.com/api/api_post.php",
method : "POST",
qs : {
"api_dev_key" : MY_DEV_KEY,
"api_option" : "paste",
"api_paste_code" : "random text"
}
},function(err,res,body){
...
});
我的理解是,由于该方法是 POST
并且提供了查询字符串参数,因此 qs
对象中的值将作为 key=value
对存储在正文中。 (参考:)
但是,我从 PasteBin 得到了 Bad API request, invalid api_option
。所以我 curl
像这样从我的终端发送请求:
curl -X POST "http://pastebin.com/api/api_post.php" -d "api_dev_key=[MY_DEV_KEY]&api_option=paste&api_paste_code=some+random+text"
这成功了。
所以这导致了两个问题:
- 发出
POST
请求并提供qs
时,参数究竟是如何发送的?
- 如何仅使用
request
模块发送 URL 编码的正文?
将对象中的 qs
键重命名为 form
。 qs
键用于在 URL 末尾指定查询字符串(例如对于 GET 请求)。 form
键用于指定格式 URL 编码的请求正文(例如对于 POST 请求)。
对我来说也是同样的问题,我的解决方案非常适合我。
request.post({
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
url : "http://pastebin.com/api/api_post.php",
body : "api_dev_key=MY_DEV_KEY&api_option=paste&api_paste_code=andom text"},function(err,res,body){ ...});
我正在尝试 create a new paste using the PasteBin API 使用 request
模块,如下所示:
var request = require("request");
request({
url : "http://pastebin.com/api/api_post.php",
method : "POST",
qs : {
"api_dev_key" : MY_DEV_KEY,
"api_option" : "paste",
"api_paste_code" : "random text"
}
},function(err,res,body){
...
});
我的理解是,由于该方法是 POST
并且提供了查询字符串参数,因此 qs
对象中的值将作为 key=value
对存储在正文中。 (参考:)
但是,我从 PasteBin 得到了 Bad API request, invalid api_option
。所以我 curl
像这样从我的终端发送请求:
curl -X POST "http://pastebin.com/api/api_post.php" -d "api_dev_key=[MY_DEV_KEY]&api_option=paste&api_paste_code=some+random+text"
这成功了。
所以这导致了两个问题:
- 发出
POST
请求并提供qs
时,参数究竟是如何发送的? - 如何仅使用
request
模块发送 URL 编码的正文?
将对象中的 qs
键重命名为 form
。 qs
键用于在 URL 末尾指定查询字符串(例如对于 GET 请求)。 form
键用于指定格式 URL 编码的请求正文(例如对于 POST 请求)。
对我来说也是同样的问题,我的解决方案非常适合我。
request.post({
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
url : "http://pastebin.com/api/api_post.php",
body : "api_dev_key=MY_DEV_KEY&api_option=paste&api_paste_code=andom text"},function(err,res,body){ ...});