Express框架的路由
2017-03-31 本文已影响0人
红烧排骨饭
什么是路由
路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问
每一个路由都可以有一个或者多个处理器函数,当匹配到路由时,这些函数将被执行
路由的定义
路由的定义由如下结构组成
app.METHOD(PATH, HANDLER)
其中,app
是一个 express
实例;METHOD
是某个 HTTP 请求方式中的一个;PATH
是服务器端的路径;HANDLER
是当路由匹配到时需要执行的函数
例子
下面的代码展示了几个路由实例
// 对网站首页的访问返回 "Hello World!" 字样
app.get('/', function(req, res) {
res.send('Hello, word!');
});
// 网站首页接受 POST 请求
app.post('/', function(req, res) {
res.send('Got a POST request');
});
// /user 节点接受 PUT 请求
app.put('/user', function(req, res) {
res.send('Got a PUT request at /user');
});
// /user 节点接受 DELETE 请求
app.delete('/user', function(req, res) {
res.send('Got ad DELETE request at /user');
});
express.Router
看一下目前 index.js 文件的内容
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send('Hello, word!');
});
app.post('/', function(req, res) {
res.send('Got a POST request');
});
app.put('/user', function(req, res) {
res.send('Got a PUT request at /user');
});
app.delete('/user', function(req, res) {
res.send('Got ad DELETE request at /user');
});
app.listen(3000);
可以看到这里写了很多的路由。在实际开发中通常有很多很多的路由,如果都写到一起的话,既臃肿也不好维护。可以使用 express.Router
实现更优雅的解决方案。在项目的 routes/
文件夹下创建 index.js
和 user.js
文件,把路由的定义写到这里。最终的效果如下
routes/index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.send('Hello, word!');
});
router.post('/', function(req, res) {
res.send('Got a POST request');
});
module.exports = router;
routes/user.js
var express = require('express');
var router = express.Router();
router.put('/', function(req, res) {
res.send('Got a PUT request at /user');
});
router.delete('/', function(req, res) {
res.send('Got ad DELETE request at /user');
});
module.exports = router;
index.js
var express = require('express');
var app = express();
var indexRouter = require('./routes/index');
var userRouter = require('./routes/user');
app.use('/', indexRouter);
app.use('/user', userRouter);
app.listen(3000);