使用 node.js 在 POST 请求中发送 URL 编码字符串

Sending URL encoded string in POST request using node.js

我很难将 url 编码的字符串发送到 Stormpath /oauth/token API 端点。该字符串应如下所示:

 grant_type=password&username=<username>&password=<password>

通过选择原始/文本选项,在请求正文中提供类似于上述字符串的字符串,我使用 Postman 成功命中了端点并检索了我想要的数据。但是当我生成代码片段时,它看起来像这样:

var request = require("request");

var options = { method: 'POST',
  url: 'https://<My DNS label>.apps.stormpath.io/oauth/token',
  headers: 
   { 'postman-token': '<token>',
     'cache-control': 'no-cache',
     'content-type': 'application/x-www-form-urlencoded',
     host: '<My DNS label>.apps.stormpath.io',
     accept: 'application/json' },
  form: false };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

那个字符串去哪儿了?我想要一些帮助来理解知道我使用 Postman 将 url 编码的字符串发送到 API 端点与在 Postman 生成的代码中没有看到它之间的脱节。因为现在我不知道如何在我的实际应用程序中重现对端点的成功调用。

对我来说,似乎我应该简单地向请求提供一个 body,但响应却是 {"error":"invalid_request","message":"invalid_request"}。我也尝试将 url 编码的字符串附加到 url 但 returns 是 404 错误。

我现在才重新开始使用 API,但我不是很有经验。

表单数据需要以对象的形式发布,示例如下:

request.post('http://service.com/upload', {form:{key:'value'}})

摘自此文档:

https://github.com/request/request#forms

希望对您有所帮助!