gpt4 book ai didi

javascript - Node js 使用 request/request api 调用返回的数据

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:04 32 4
gpt4 key购买 nike

我正在使用 npm 请求进行 Node api 调用

这是一些基本的示例代码

request = require('request');

ApiRequest = function (options) {
this.uri = 'http://sampleapi.com/' + options.path,
this.method = options.method,
this.json = options.json
};

ApiRequest.prototype.call = function () {
request(this, function (error, response, body) {
if (body) {
console.log(body);
} else {
console.log(error || "There was a problem placing your request")
}
});
};

exports.startApiCall = function () {
options = {
path: 'available',
method: 'GET'
};
var myRequest = new Request(options);
myRequest.call();
};

当我在 ApiRequest 原型(prototype)上调用 call() 时,我似乎唯一能做的就是控制台记录输出,我确信如果我使用数据库,我将能够插入它。我希望调用函数将结果对象返回到调用它的位置(exports.startApiCall),这样我就可以重新使用该函数,因为有时我想控制台记录它,有时使用它来构建不同的调用。

我尝试从请求中返回正文,返回请求本身给了我一个没有正文的巨大对象。我还尝试将主体设置为变量并将其返回到函数的底部。无论如何,注意似乎很有效。

提前致谢!

最佳答案

您存在变量名称冲突。将本地请求变量重命名为其他名称。例如:

request = require('request');

Request = function (options) {
this.uri = 'http://sampleapi.com/' + options.path,
this.method = options.method,
this.json = options.json
};

Request.prototype.call = function (callback) {
request(this, function (error, response, body) {
if (body) {
callback(error, body)
} else {
console.log(error || "There was a problem placing your request");
callback(error);
}
});
};

exports.startApiCall = function (callback) {
options = {
path: 'available',
method: 'GET'
};
var myRequest = new Request(options);
myRequest.call(function(error, body) {
//check the error and body here;
//do the logic
//you can also pass it through to the caller
callback && callback(error, body);
});
};

当您使用模块(让其命名为 mymodule)时,您可以执行以下操作:

var my = require('mymodule');
my.startApiCall(function(error, body){
//do something with body
});

如果您不希望消费者直接处理错误和/或正文,您可以删除回调参数:

exports.startApiCall = function () {
options = {
path: 'available',
method: 'GET'
};
var myRequest = new Request(options);
myRequest.call(function(error, body) {
//check the error and body here;
//do the logic
//you can also pass it through to the caller
});
};

关于javascript - Node js 使用 request/request api 调用返回的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28391814/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com