diff --git a/README.md b/README.md index 80a6907..6332c16 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,19 @@ PATCH /:resource/:id DEL /:resource/:id ``` -To slice resources, add `_start` and `_end` to query parameters. +To slice resources, add `_start` and `_end`. + +``` +GET /:resource?_start=&end= +GET /:resource?filter=&filter=&_start=&end= +GET /:parent/:parentId/:resource?_start=&end= +``` + +To make a full-text search on resources, add `q`. + +``` +GET /:resource?q= +``` For routes usage information, have a look at [JSONPlaceholder](https://github.com/typicode/jsonplaceholder) code examples. diff --git a/src/routes.js b/src/routes.js index 0b61eba..87f323c 100644 --- a/src/routes.js +++ b/src/routes.js @@ -13,8 +13,8 @@ routes.db = function(req, res, next) { // GET /:resource?q= // GET /:resource?attr=&attr= // GET /:parent/:parentId/:resource?attr=&attr= -// GET /*?*&limit= -// GET /*?*&offset=&limit= +// GET /*?*&_end= +// GET /*?*&_start=&_end= routes.list = function(req, res, next) { // Filters list @@ -23,16 +23,17 @@ routes.list = function(req, res, next) { // Result array var array - // Remove offset and limit from req.query to avoid filtering using those + // Remove _start and _end from req.query to avoid filtering using those // parameters - var offset = req.query.offset - var limit = req.query.limit + var _start = req.query._start + var _end = req.query._end - delete req.query.offset - delete req.query.limit + delete req.query._start + delete req.query._end if (req.query.q) { + // Full-text search var q = req.query.q.toLowerCase() array = low(req.params.resource).where(function(obj) { @@ -67,14 +68,14 @@ routes.list = function(req, res, next) { } } - // Slicing result - if (limit) { + // Slice result + if (_end) { res.setHeader('X-Total-Count', array.length) res.setHeader('Access-Control-Expose-Headers', 'X-Total-Count') - offset = offset || 0 + _start = _start || 0 - array = array.slice(offset, limit) + array = array.slice(_start, _end) } res.jsonp(array) diff --git a/test/server.js b/test/server.js index d9a2595..68a1f16 100644 --- a/test/server.js +++ b/test/server.js @@ -79,10 +79,10 @@ describe('Server', function() { }) }) - describe('GET /:resource?limit=', function() { + describe('GET /:resource?_end=', function() { it('should respond with a sliced array', function(done) { request(server) - .get('/comments?limit=2') + .get('/comments?_end=2') .expect('Content-Type', /json/) .expect('x-total-count', low.db.comments.length.toString()) .expect('Access-Control-Expose-Headers', 'X-Total-Count') @@ -91,10 +91,10 @@ describe('Server', function() { }) }) - describe('GET /:resource?offset=&limit=', function() { + describe('GET /:resource?_start=&_end=', function() { it('should respond with a sliced array', function(done) { request(server) - .get('/comments?offset=1&limit=2') + .get('/comments?_start=1&_end=2') .expect('Content-Type', /json/) .expect('x-total-count', low.db.comments.length.toString()) .expect('Access-Control-Expose-Headers', 'X-Total-Count')