javascript - 如何使用查询字符串 promise GET 请求?

标签 javascript node.js request npm

我使用查询字符串参数成功发出请求:

// Works
var Promise = require("bluebird");
var request = Promise.promisifyAll(require("request"));

request.get({
    url: 'https://api.angel.co/1/tags/' + encodeURIComponent(friscoLocationTag) + '/startups', 
    qs: {
        access_token: myToken,
        order: 'popularity'
    },
    method: 'GET'
}, function(error, response, body){
    // request success
    console.log(body);
});

但是,当我尝试 promise 我的请求时,我失败了:

// Does Not Work
var Promise = require("bluebird");
var request = Promise.promisifyAll(require("request"));

request.get({
    url: 'https://api.angel.co/1/tags/' + encodeURIComponent(friscoLocationTag) + '/startups', 
    qs: {
        access_token: myToken,
        order: 'popularity'
    },
    method: 'GET'
}).then(function(error, response, body){
    console.log(body);
});

这给出了错误:

}).then(function(error, response, body){
   ^
TypeError: undefined is not a function
    at Object.<anonymous> (/Users/connorleech/Projects/startup-locator/server/routes.js:36:4)

如何使用 bluebird 正确地 promise 我的 get 请求?

最佳答案

尝试对请求模块进行 promise 时会遇到陷阱,您遇到的问题只是其中之一。我建议您改为查看 request-promise这基本上就是您要尝试做的,它是使用 bluebird promises 的请求模块的实现

编辑:

安装请求 promise

npm install request-promise --save

然后:

var request = require('request-promise');

request({
    url: 'https://api.angel.co/1/tags/' + encodeURIComponent(friscoLocationTag) + '/startups', 
    qs: {
        access_token: myToken,
        order: 'popularity'
    },
    method: 'GET'
})
.then(function(body){
  console.log(body)
})

关于javascript - 如何使用查询字符串 promise GET 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32507772/

相关文章:

javascript - 如何使用 JavaScript 在新窗口中插入滚动条?

javascript - 如何在 nodejs 的 views 文件夹中包含 View 相关的 javascript (*.js) 文件?

mysql - 如何使用nodeJS连接azure mysql服务器

mysql - Node js - mysql任务完成后是否需要关闭连接?

Python (bs4 + selenium) - 使用selenium模拟一些 Action 后搜索html数据

php - 如何在没有用户代理 header 的情况下发送请求

javascript - 在 D3 中放大和缩小时如何更改平移和缩放的速度(使用 zoom.on 和 d3.event.translate,d3.event.zoom)?

带有for循环的Javascript数组,仅返回最后一个元素

javascript - Jquery AJAX json - 未调用

ios - 使用 alamofire 发送字典数组