1

我需要一种从 FeatherJS(基于 Express 的 NodeJS 框架)应用程序调用远程 REST-API 的方法。

我发现了几篇建议使用请求模块的帖子,这很好:https ://github.com/request/request

现在我使用 FeatherJS 有什么更好的建议吗?还是请求模块就可以了?

4

1 回答 1

2

我推荐这个request-promise模块,因为 Feathers 服务期望得到承诺。这是这篇文章中的一个示例服务,如何使现有的 API 实时

const feathers = require('feathers');
const rest = require('feathers-rest');
const socketio = require('feathers-socketio');
const bodyParser = require('body-parser');
const handler = require('feathers-errors/handler');
const request = require('request-promise');

// A request instance that talks to the API
const makeRequest = request.defaults({
  baseUrl: 'https://todo-backend-rails.herokuapp.com',
  json: true
});

const todoService = {
  find(params) {
    return makeRequest(`/`);
  },

  get(id, params) {
    return makeRequest(`/${id}`);
  },

  create(data, params) {
    return makeRequest({
      uri: `/`,
      method: 'POST',
      body: data
    });
  },

  update(id, data, params) {
    // PATCH and update work the same here
    return this.update(id, data, params);
  },

  patch(id, data, params) {
    return makeRequest({
      uri: `/${id}`,
      method: 'PATCH',
      body: data
    });
  },

  remove(id, params) {
    // Retrieve the original Todo first so we can return it
    // The API only sends an empty body
    return this.get(id, params).then(todo => makeRequest({
      method: 'DELETE',
      uri: `/${id}`
    }).then(() => todo));
  }
};

// A normal Feathers application setup
const app = feathers()
  .use(bodyParser.json())
  .use(bodyParser.urlencoded({ extended: true }))
  .configure(rest())
  .configure(socketio())
  .use('/todos', todoService)
  .use('/', feathers.static(__dirname))
  .use(handler());

app.listen(3030);
于 2016-10-07T15:28:13.583 回答