我需要一种从 FeatherJS(基于 Express 的 NodeJS 框架)应用程序调用远程 REST-API 的方法。
我发现了几篇建议使用请求模块的帖子,这很好:https://github.com/request/request
既然我正在使用 FeatherJS,还有什么更好的建议吗?或者请求模块就可以了吗?
最佳答案
我推荐使用 request-promise
模块,因为 Feathers 服务需要 Promise。这是一个示例服务 from this post how to make an existing API real-time :
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);
关于node.js - 从featherJS应用程序调用远程休息服务的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39894292/