使用请求模块在Node.js中发送URL编码的参数



我正在尝试使用带有request模块的PasteBin API创建一个新的粘贴,如下所示:

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,并且提供了querystring参数,因此qs对象中的值将作为key=value对存储在主体中。(参考:HTTP POST请求中的参数是如何发送的?(

然而,我从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"  

这起到了作用。

这就引出了两个问题:

  1. 当提出POST请求并提供qs时,参数究竟是如何发送的
  2. 如何仅使用request模块发送URL编码的正文

将对象中的qs键重命名为formqs键用于指定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){  ...});  

相关内容

  • 没有找到相关文章

最新更新