forked from PatrickJS/angular-webpack-starter
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtodo_api.js
More file actions
59 lines (51 loc) · 1.31 KB
/
todo_api.js
File metadata and controls
59 lines (51 loc) · 1.31 KB
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
// Node
var util = require('util');
// Express
var express = require('express');
var db = require('./db');
module.exports = function(config) {
var router = express.Router();
router.route('/todos')
.get(function(req, res) {
console.log('GET');
res.json(db.todos);
})
.post(function(req, res) {
console.log('POST', util.inspect(req.body, {colors: true}));
var todo = req.body;
if (todo) {
db.todos.push(todo);
res.json(todo);
} else {
res.end();
}
})
router.param('todo_id', function(req, res, next, todo_id) {
var id = Number(req.params.todo_id);
try {
var todo = db.todos[id];
req.todo = db.todos[id];
next();
} catch(e) {
next(new Error('failed to load todo'));
}
});
router.route('/todos/:todo_id')
.get(function(req, res) {
console.log('GET');
res.json(req.todo);
})
.put(function(req, res) {
console.log('PUT', util.inspect(req.body, {colors: true}));
var index = db.todos.indexOf(req.todo);
var todo = db.todos[index] = req.body;
res.json(todo);
})
.delete(function(req, res) {
console.log('DELETE');
var index = db.todos.indexOf(req.todo);
db.todos.splice(index, 1);
res.json(req.todo);
});
return router;
};