我需要一种从 FeatherJS(基于 Express 的 NodeJS 框架)应用程序调用远程 REST-API 的方法。
我发现了几篇建议使用请求模块的帖子,这很好:https ://github.com/request/request
现在我使用 FeatherJS 有什么更好的建议吗?还是请求模块就可以了?
我需要一种从 FeatherJS(基于 Express 的 NodeJS 框架)应用程序调用远程 REST-API 的方法。
我发现了几篇建议使用请求模块的帖子,这很好:https ://github.com/request/request
现在我使用 FeatherJS 有什么更好的建议吗?还是请求模块就可以了?
我推荐这个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);