十、Express 路由

  • Post author:
  • Post category:其他


路由是Express框架中最重要的功能之一,在Express中,路由指的是客户端的请求与服务器处理函数之间的映射关系,Express中的路由分别由请求的类型(GET/POST等)、请求的URL地址和处理函数三个部分组成的;

APP级别路由

路由的语法格式如下:

app.Method(path,handler);    // Method可以是get,post,put,delete等

在上一篇当中就已经使用过监听 GET/POST 请求当中就使用过创建字符串形式路由路径匹配app路由;进行一下简单的回顾:

app.get('/',function(req,res){ })         // 路由匹配 /root
app.get('/user',function(req,res){})      // 路由匹配 /user

字符串模板的路由路径匹配app路由:

stu?book中的 ? 表示至多一个,可以是 /stbook 或 /stubook 都可以匹配到;

app.get('/stu?book',function(req,res){
    res.send('对学生开发的书籍');
})

stu+book中的 + 表示至少一个,可以是 /stuubook 或 /stuuuuubook (u最少一个);

app.get('/stubook',function(req,res){res.send('对学生开发的书籍');})
app.get('/stuubook',function(req,res){res.send('对学生开发的书籍');})
app.get('/stuuubook',function(req,res){res.send('对学生开发的书籍');})

stu*book中的 * 表示stu和book之间可以有任意的字符;

stu(dent)?book 表示可以有括号内的字符也可以没有,如 /stubook 或 /studentbook 均可;


路由参数的路由路径:

路由参数用来获取路由路径的值,该值会赋给req.params ;(路径参数必须由大小写字母,数字和下划线组成);

app.get('/stu/:s_Id/books/:b_Id',function(req,res){
    res.send(req.params);
})


不同请求方式的app路由:


GET请求 :

app.get('/',function(){
    res.send('GET');
})


POST请求:

app.post('/',function(req,res){
    res.send('POST');
})


ALL —— 任意http请求:

app.all('/',function(req,res){
    res.send('ALL');
})

除了以上的这些还有以数组的形式或以组合形式的方式执行函数的app路由,其中需要带next参数,用于传递中间件的控制权,有的花会在中间的部分提及;app路由的内容就到此!


Router 级别路由

上面的内容就是app路由,创建路由都是在项目的入口文件(app.js)中操作的,那么在实际开发中,这样的集中路由不利于开发维护,所以同样的需要进行模块化的管理,也就需要模块化的路由;

使用express生成项目中有一个routes文件夹,routes文件夹用于存放所有模块化路由文件,默认的有两个:index.js 和 users.js ;下面来进行建立router级别路由。


1. 创建路由模块对应的 .js 文件,使用express.Router() 方法创建可挂载的模块化路由;

// /routes/index.js文件
const express = require('express');
const router = express.Router();


2. 向路由上挂载具体的路由;

router.get('/user',function(req,res){
    res.send('user: admin');
})


3. 使用 module.exports 向外共享路由对象;

module.exports = router;


4. 注册路由模块;

// 入口文件app.js文件
var indexRouter = require('./routes/index');
app.use('/',indexRouter);

补充说明:可添加路由访问前缀 app.use(‘/路由访问前缀’,indexRouter);


5. 测试运行;

以上就是模块化路由的内容,在实际开发中对于不同的模块化内容当中可以将内容编写在各个.js文件中,然后将要使用的路由进行挂载向外共享注册使用比起使用app.js入口文件创建路由的方式是很不错的选择!Express 路由的内容就到此结束了,感谢大家的支持!



版权声明:本文为weixin_52203618原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。