REST
通过services路径的RESTful接口,可以把服务接口暴露出去。
也就是说可以通过HTTP方法来调用服务,
使用
安装这个Provider
$ npm install feathers-rest body-parser
如果想在执行REST handler之前,增加其他的中间件,可以在注册服务前,调用
app.use(middleware)。
// app.js
'use strict';
const feathers = require('feathers');
const rest = require('feathers-rest');
const bodyParser = require('body-parser');
class MessageService {
constructor() {
this.messages = [];
}
find(params) {
return Promise.resolve(this.messages);
}
create(data, params) {
this.messages.push(data);
return Promise.resolve(data);
}
}
const app = feathers()
// Enable the REST provider
.configure(rest())
// Turn on JSON parser for REST services
.use(bodyParser.json())
// Turn on URL-encoded parser for REST services
.use(bodyParser.urlencoded({ extended: true }));
app.use('/messages', new MessageService());
// Log newly created messages on the server
app.service('messages').on('created', message =>
console.log('Created message', message)
);
app.listen(3030);
查询,路由和中间件参数
const feathers = require('feathers');
const rest = require('feathers-rest');
const app = feathers();
app.configure(rest())
.use(function(req, res, next) {
req.feathers.fromMiddleware = 'Hello world';
next();
});
app.use('/users/:userId/messages', {
get(id, params) {
console.log(params.query); // -> ?query
console.log(params.provider); // -> 'rest'
console.log(params.fromMiddleware); // -> 'Hello world'
console.log(params.userId); // will be `1` for GET /users/1/messages
return Promise.resolve({
id,
params,
read: false,
text: `Feathers is great!`,
createdAt: new Date.getTime()
});
}
});
app.listen(3030);
自定义响应格式
默认地,REST回应的格式化器是由中间件来实现,一般返回JSON格式数据。
通过重载res.format来重新格式化res.data,通过中间件可以返回请求。