我如何将其格式化为RESTful API调用?

时间:2016-04-27 00:26:02

标签: javascript api curl request

我正在学习使用API​​。我试图像api一样打电话:

curl -X POST https://api.locu.com/v2/venue/search -d '{
  "api_key" : "f165c0e560d0700288c2f70cf6b26e0c2de0348f",
  "fields" : [ "name", "location", "contact" ],
  "venue_queries" : [
    {
      "name" : "bistro central parc"
    }
  ]
}'

这适用于curl,但我想在没有cURL的情况下进行调用。我将使用来自节点的请求来执行此操作,但是现在我只想使用邮递员进行调用。我试过了:

https://api.locu.com/v2/venue/search?api_key={myAPIKey}&fields=["name","location","contact"]&venue_queries=[{name="bistro%20central%20parc"}]

但是我不允许使用405方法。我显然是以错误的方式看待这个。这不是格式化http请求的正确方法吗?

在javascript中看起来像:

var request = require('request');
request('https://api.locu.com/v2/venue/search?api_key={myAPIKey}&fields=["name","location","contact"]&venue_queries=[{name="bistro%20central%20parc"}]', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body) // Print the google web page.
     }
})

或者是否有更好的方法来构建选项?

2 个答案:

答案 0 :(得分:2)

你javascript的请求是在GET方法中而不是帖子。你可以尝试如下:

postman

如果邮递员是您想要的主要方法,那么这应该是您想要的。如果您想以javascript(或nodejs)的形式以编程方式发送请求,那么您应该处理您已采取的请求方法。

答案 1 :(得分:1)

当然,请看一下你可以传递的qs对象的文档:

  

qs - 包含要附加到uri的查询字符串值的对象

 var request = require('request');

 var queryObject = { field1:'test1', field2:'test2' };

 request.get({url: url, qs: queryObject})
   .then(function(response){
     // do stuff   
   })