繁体   English   中英

如何使用查询字符串承诺 GET 请求?

[英]How do I promisify a GET request with query string?

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

// 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);
});

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

// 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正确承诺我的 get 请求?

有一些问题试图承诺请求模块,您遇到的问题只是其中之一。 我建议您改为查看request-promise ,这基本上就是您要尝试执行的操作,它是使用 bluebird 承诺的请求模块的实现

编辑:

安装请求-承诺

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)
})

promisified 函数称为getAsync 查看文档

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

request.getAsync({
    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);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM