encoded parameters in Node.js using request module
I am trying to create a new paste using the PasteBin API with request
module like so:
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){
...
});
My understanding is that since the method is POST
and querystring parameters are provided, the values in qs
object will be stored as key=value
pairs in the body. (Ref: How are parameters sent in an HTTP POST request?)
However, I get back a Bad API request, invalid api_option
from PasteBin. So I curl
ed the request from my terminal like so:
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"
and this worked.
So this leads to two questions:
POST
request is made and qs
is provided? request
module? Rename the qs
key to form
in the object. The qs
key is for specifying the query string on the end of the URL (eg For GET requests). The form
key is for specifying the form URL encoded request body (eg For a POST request).
上一篇: request.POST.get()总是返回None
下一篇: 编码参数在Node.js中使用请求模块