1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 1× 1× 1× 13× 13× 26× 26× 13× 1× 13× 13× 13× 13× 13× 30× 30× 13× 13× 16× 16× 16× 16× 16× 16× 16× 16× 16× 16× 16× 16× 16× 16× 16× 16× 16× | 'use strict'; var wrappers = require('./wrappers'); var debug = require('debug')('feathers:rest'); module.exports = function (config) { config = config || {}; var handler = config.handler || function (req, res) { res.format({ 'application/json': function () { res.json(res.data); } }); }; if (typeof config === 'function') { handler = config; } return function () { var app = this; app.enable('feathers rest'); debug('Setting up default middleware for REST handler'); app.use(function (req, res, next) { req.feathers = {}; next(); }); app.rest = wrappers; // Register the REST provider app.providers.push(function (path, service, options) { Iif (app.disabled('feathers rest')) { return; } var middleware = (options || {}).middleware || {}; var before = middleware.before || []; var after = middleware.after || []; var uri = path.indexOf('/') === 0 ? path : '/' + path; var baseRoute = app.route(uri); var idRoute = app.route(uri + '/:id'); debug('Adding REST provider for service `' + path + '` at base route `' + uri + '`'); // GET / -> service.find(cb, params) baseRoute.get.apply(baseRoute, before.concat(app.rest.find(service), after, handler)); // POST / -> service.create(data, params, cb) baseRoute.post.apply(baseRoute, before.concat(app.rest.create(service), after, handler)); // PATCH / -> service.patch(null, data, params) baseRoute.patch.apply(baseRoute, before.concat(app.rest.patch(service), after, handler)); // PUT / -> service.update(null, data, params) baseRoute.put.apply(baseRoute, before.concat(app.rest.update(service), after, handler)); // DELETE / -> service.remove(null, data, params) baseRoute.delete.apply(baseRoute, before.concat(app.rest.remove(service), after, handler)); // GET /:id -> service.get(id, params, cb) idRoute.get.apply(idRoute, before.concat(app.rest.get(service), after, handler)); // PUT /:id -> service.update(id, data, params, cb) idRoute.put.apply(idRoute, before.concat(app.rest.update(service), after, handler)); // PATCH /:id -> service.patch(id, data, params, callback) idRoute.patch.apply(idRoute, before.concat(app.rest.patch(service), after, handler)); // DELETE /:id -> service.remove(id, params, cb) idRoute.delete.apply(idRoute, before.concat(app.rest.remove(service), after, handler)); }); }; }; |