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

标签 node.js request npm pastebin

我正在尝试 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,并且提供了querystring参数,qs对象中的值将被存储为key=value 对在体内。 (引用:How are parameters sent in an HTTP POST request?)

但是,我从 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 请求)。

关于node.js - 使用请求模块在 Node.js 中发送 URL 编码的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31658564/

相关文章:

node.js - 如何使用 Nodejs 在 post 请求之间传输数据

javascript - 使用 Express JS .all() 方法 : detect which VERB was actually used

node.js - 无法启动 npm/yarn

node.js - 如何安装 Visual Studio 2019 的 Node js 工具?

javascript - 设置 git npm 依赖项以进行调试

javascript - 在 JavaScript 中获取页面加载开始时间

ios - 具有逻辑的顺序请求 - Swift 3、Xcode 8、Alamofire 4

javascript - Node 命令不执行星号路径

javascript - Ember 如何更新 NPM 包 clean-css

mysql - 我可以将 MySQL 添加到已有 Node.js 的 EC2 实例上吗?