mirror of
https://github.com/typicode/json-server.git
synced 2025-07-28 20:52:08 +08:00
Update
This commit is contained in:
102
src/server.js
102
src/server.js
@ -1,9 +1,10 @@
|
||||
var express = require('express')
|
||||
var cors = require('cors')
|
||||
var http = require('http')
|
||||
var path = require('path')
|
||||
var _ = require('underscore')
|
||||
var low = require('low')
|
||||
var utils = require('./utils')
|
||||
var routes = require('./routes')
|
||||
|
||||
low._.createId = utils.createId
|
||||
|
||||
@ -15,104 +16,25 @@ server.use(express.json())
|
||||
server.use(express.urlencoded())
|
||||
server.use(express.methodOverride())
|
||||
server.use(express.static(path.join(__dirname, '../public')))
|
||||
server.use(cors())
|
||||
server.use(server.router)
|
||||
|
||||
if ('development' == server.get('env')) {
|
||||
server.use(express.errorHandler());
|
||||
}
|
||||
|
||||
routes = {}
|
||||
server.get( '/db' , routes.db)
|
||||
server.get( '/:resource' , routes.list)
|
||||
server.get( '/:parent/:parentId/:resource' , routes.list)
|
||||
server.get( '/:resource/:id' , routes.show)
|
||||
|
||||
// GET /db
|
||||
routes.db = function(req, res, next) {
|
||||
res.jsonp(low.db)
|
||||
}
|
||||
server.post( '/:resource' , routes.create)
|
||||
|
||||
// GET /:resource?attr=&attr=
|
||||
routes.list = function(req, res, next) {
|
||||
var properties = {}
|
||||
var query
|
||||
server.put( '/:resource/:id' , routes.update)
|
||||
server.patch('/:resource/:id' , routes.update)
|
||||
|
||||
Object.keys(req.query).forEach(function (key) {
|
||||
var value = req.query[key]
|
||||
properties[key] = utils.toNative(value)
|
||||
})
|
||||
server.del( '/:resource/:id' , routes.destroy)
|
||||
|
||||
if (_(properties).isEmpty()) {
|
||||
query = low(req.params.resource)
|
||||
} else {
|
||||
query = low(req.params.resource).where(properties)
|
||||
}
|
||||
|
||||
res.jsonp(query.value())
|
||||
}
|
||||
|
||||
// GET /:parent/:parentId/:resource
|
||||
routes.nestedList = function(req, res, next) {
|
||||
var properties = {}
|
||||
var resource
|
||||
|
||||
// Set parentID
|
||||
properties[req.params.parent.slice(0, - 1) + 'Id'] = +req.params.parentId
|
||||
|
||||
// Filter using parentID
|
||||
resource = low(req.params.resource)
|
||||
.where(properties)
|
||||
.value()
|
||||
|
||||
res.jsonp(resource)
|
||||
}
|
||||
|
||||
// GET /:resource/:id
|
||||
routes.show = function(req, res, next) {
|
||||
var resource = low(req.params.resource)
|
||||
.get(+req.params.id)
|
||||
.value()
|
||||
|
||||
res.jsonp(resource)
|
||||
}
|
||||
|
||||
// POST /:resource
|
||||
routes.create = function(req, res, next) {
|
||||
var resource = low(req.params.resource)
|
||||
.insert(req.body)
|
||||
.value()
|
||||
|
||||
res.jsonp(resource)
|
||||
}
|
||||
|
||||
// PUT /:resource/:id
|
||||
// PATCH /:resource/:id
|
||||
routes.update = function(req, res, next) {
|
||||
var resource = low(req.params.resource)
|
||||
.update(+req.params.id, req.body)
|
||||
.value()
|
||||
|
||||
res.jsonp(resource)
|
||||
}
|
||||
|
||||
// DELETE /:resource/:id
|
||||
routes.destroy = function(req, res, next) {
|
||||
low(req.params.resource).remove(+req.params.id)
|
||||
utils.clean()
|
||||
|
||||
res.send(204)
|
||||
}
|
||||
|
||||
server.get('/db', routes.db)
|
||||
server.get('/:resource', routes.list)
|
||||
server.get('/:parent/:parentId/:resource', routes.nestedList)
|
||||
server.get('/:resource/:id', routes.show)
|
||||
server.post('/:resource', routes.create)
|
||||
server.put('/:resource/:id', routes.update)
|
||||
server.patch('/:resource/:id', routes.update)
|
||||
server.del('/:resource/:id', routes.destroy)
|
||||
|
||||
server.on('after', function (req, res, route, err) {
|
||||
var latency = Date.now() - req.time()
|
||||
console.log('%s %s %s - %sms',
|
||||
req.method, req.url, res.statusCode, latency
|
||||
)
|
||||
})
|
||||
server.low = low
|
||||
|
||||
module.exports = server
|
Reference in New Issue
Block a user