我一直在看很多使用Node.js
中的RESTful API的示例,但是每个示例总是在API调用内执行console.log()
,而试图使其模块化是没有意义的。>
我要消费对RESTful API的调用返回的数据,并根据结果执行其他操作。
例如:
进行RESTful API调用:
/api/name/1
返回{isError: false, name: "John Doe", errorMessage: null}
/api/name/2
返回{isError: false, name: "Jane Doe", errorMessage: null}
/api/name/3
返回{isError: true, name: null, errorMessage: "No such user"}
我想将这些API调用(以及其他API)包装在自己的模块中,并相应地调用它们。
使用我发现的样本,这是当前的样本:
./ modules / myApi.js
const https = require('https');
// Should I be using exports.getName = ... instead?
module.exports.getName = function(id) {
let result;
var optionsget = {
host: 'localhost',
port: 12345,
path: `/api/name/${id}`,
method: 'GET'
};
var reqGet = https.request(optionsget, function(res) {
res.on('data', function(data) {
const d = JSON.parse(data);
if (!d.success === false) {
result = d.name;
} else {
result = d.errorMessage;
}
});
});
reqGet.end();
reqGet.on('error', function(e) {
result = e;
});
return result;
};
index.js
const api = require('./modules/myApi');
let result1 = api.getName(1);
console.log(result1);
let result2 = api.getName(2);
console.log(result2);
let result3 = api.getName(3);
console.log(result3);
这会产生undefined
,大概是因为结果不是waiting
。
我该如何重写呢?