1.开始
下载源码:https://github.com/sayar/NodeMVA
Express组件:npm install express -g(全局安装)
2.ExpressRest
打开目录08_ExpressREST
app.js
var express = require('express'); var app = express();
//捕获GET方法,并处理返回一个Json,比C#写Json简单多了啊 app.get('/', function (req, res) { res.json({ message: 'hooray! welcome to our api!' }); });
//侦听8080端口 app.listen(process.env.PORT || 8080);
现在项目都用html/js了,写个node几行代码搞定json restful,还带web服务器,感觉神清气爽啊!
打开CMD让项目运行起来
$ cd 08_EXPRESSREST $ node app
3.AdvancedRESTAPI
打开目录12_AdvancedRESTAPI
app.js:初始化Express环境注册路由
routes/api.js :rest api的具体实现代码
app.js中,注册路由代码十分简单
//初始化一个api.js实例 var api = require('./routes/api'); //初始化一个express.js实例 var app = express(); //将指定url路由处理程序指向api.js文件 app.use('/api', api);
routes/api.js中对每个api后的url按GETPUTPOSTDELETE分别处理
Resource |
GET |
PUT |
POST |
DELETE |
Collection URI, such as http://api.example.com/v1/dogs/ |
List all the dogs |
Replace all the dogs with a new collection of dogs. |
Create a new dog in the collection. |
Delete the entire dog collection. |
Element URI, such as http://api.example.com/v1/dog/1 |
Get a specific dog. |
Replace a dog in the collection with another dog. |
Not used. |
Delete the dog from the collection. |
var express = require('express'); var router = express.Router(); var dogs = [ { "dog_id": "0", "dog_name": "Ginger" }, { "dog_id": "1", "dog_name": "Ruby" }, { "dog_id": "2", "dog_name": "Buddy" } ]; /* GET all dogs */ router.get('/dogs/', function(req, res, next) { res.json(dogs); }); /* PUT replace all dogs */ router.put('/dogs/', function(req, res, next) { console.log(req.body); dogs = req.body; res.json({"STATUS": "200 OK"}); }); /* POST create a new dog */ router.post('/dogs/', function(req, res, next) { dogs.push(req.body) res.json({"STATUS": "200 OK"}); }); /* DELETE delete the entire dog collection */ router.delete('/dogs/', function(req, res, next) { dogs = []; res.json({"STATUS": "200 OK"}); }); /* GET a specific dog */ router.get('/dogs/:id', function(req, res, next) { var i = 0; var dog = null; for(i = 0; i != dogs.length; i++){ if(dogs[i].dog_id == req.params.id){ dog = dogs[i]; break; } } dog !== null ? res.json(dog) : res.json({"STATUS": "404 NOT FOUND"}) }); /* PUT replace a specific dog with another dog */ router.put('/dogs/:id', function(req, res, next) { var i = 0; var dog = null; for(i = 0; i != dogs.length; i++){ if(dogs[i].dog_id == req.params.id){ dog = dogs[i]; break; } } if(dog !== null){ dog.dog_name = req.body['dog_name'] res.json({"STATUS": "200 OK"}); } else { res.json({"STATUS": "404 NOT FOUND"}); } }); /* DELETE a specific dog from the collection */ router.delete('/dogs/:id', function(req, res, next) { var i = 0; for(i = 0; i != dogs.length; i++){ if(dogs[i].dog_id == req.params.id){ dogs.splice(i, 1); return res.json({"STATUS": "200 OK"}); } } return res.json({"STATUS": "404 NOT FOUND"}); }); module.exports = router;