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

时间:2017-03-02 20:57:22

标签: node.js api postman stormpath

下午好,

我很难将网址编码的字符串发送到Stormpath /oauth/token API端点。字符串看起来像这样:

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

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

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但是返回404错误。

我感谢您提供任何帮助,因为我现在正在重新使用API​​,而且我不是很有经验。

1 个答案:

答案 0 :(得分:1)

The form data needs to be posted as an object, here is an example:

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

Taken from this documentation:

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

Hope this helps!