Node.js:使用RESTful API

时间:2019-03-06 20:44:03

标签: javascript node.js node-modules

我一直在看很多使用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

我该如何重写呢?

0 个答案:

没有答案