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.jsuser.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);
上一篇下一篇

猜你喜欢

热点阅读