路由是指分组从源到目的地时,决定端到端路径的网络范围的进程。广义上来讲,路由就是映射关系。在生活中很常见的路由就比如,电信给你打电话,然后让你输入数字来选择你需要办理什么业务~在这里,按键与服务之间的映射关系就是路由!
在express中路由是指客户端的请求与服务区处理函数之间的映射关系~~
在express中路由有三个部分组成,分别是请求类型,请求的URL地址和处理函数,格式如下
app.method(path,handler)
举个栗子吧~
//匹配get请求,且请求的URL为'/'
app.get('/',(req,res)=>{
res.send('hello')
})
//匹配post请求,且请求的URL为'/'
app.post('/',(req,res)=>{
res.send('hello i am post')
})
路由的匹配过程
在express中最简单的使用路由的方法就是把路由挂载到app上,如下
举个栗子吧~
const express = require('express')
//创建Web服务器,命名为app
const app = express()
//挂载路由
app.get('/',(req,res)=>{
res.send('hello!')
})
//启动服务器
app.listen(80,function(){
console.log('server running at http://127.0.0.1')
})
为了方便对路由进行管理,express不建议直接将路由挂载到app上,而是将路由抽离为单独的模块
步骤如下:
router.js里的代码
//导入expres
const express = require('express')
//创建路由对象
const router = express.Router()
//挂载路由
router.get('/',(req,res)=>{
res.send('这是用路由模块返回的信息')
})
//向外导出路由对象
module.exports = router
主文件的里的代码
const express = require('express')
//创建Web服务器,命名为app
const app = express()
//导入路由模块
const router = require('./csdnrouter')
//注册路由模块
app.use(router)
//启动服务器
app.listen(80,function(){
console.log('server running at http://127.0.0.1')
})
注意~
中间件是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。特指业务流程的中间处理环节
const express = require('express')
const app = express()
app.get('/',function(req,res,next){
next()
})
app.listen(80,()=>{
...
})
注意~
补充~
next()函数是实现多个中间件连续调用的关键,他表示把流转关系交给下一个中间件或者路由
全局中间件就是可以在客户端发起的任何请求,到达服务器之后,都会触发的中间件
通过调用app.(中间件函数),即可定义一个全局生效的中间件
举个栗子吧~
const express = require('express')
//创建Web服务器,命名为app
const app = express()
//导入路由模块
const router = require('./csdnrouter')
//定义一个最简单的中间件函数
const ab = function(req,res,next){
console.log('这是一个简单的中间件')
next()
}
//将a注册为全局生效的中间件
app.use(ab)
//注册路由模块
app.use(router)
//启动服务器
app.listen(80,function(){
console.log('server running at http://127.0.0.1')
})
注意~
当服务器接受到请求之后,会先把请求交给ab函数去处理,所以会先打印 ‘这是一个简单的中间件’ 这句话,然后经过next()函数的作用,将请求转给下一个中间件或者路由,所有路由接收到了请求,打印出 ‘调用了这个路由’ 这句话
直接将中间件函数写在app.use()中!!
app.use(function(req,res,next){
console.log('这是一个简单的中间件函数')
next()
})
不使用app.use()定义的中间件,叫做局部生效的中间件
const express = require('express')
const app = express()
const router = require('./csdnrouter')
const ab = function(req,res,next){
console.log('创建局部中间件')
next()
}
app.get('/get',ab,(req,res)=>{
console.log('~~~')
res.send("hello,这是局部中间件")
})
app.listen(80,function(){
console.log('server running at http://127.0.0.1')
})
1️⃣ 一定要在路由之前注册中间件
2️⃣ 客户端发送过来的请求,可以连续调用多个中间件进行处理
3️⃣ 执行完中间件的业务代码之后,不要忘记调用next()函数
4️⃣ 为了防止代码逻辑混乱,调用next()函数之后,不要再另外写代码
5️⃣ 连续调用多个中间件的时候,多个中间件之间可以共享req和res对象
✨以上就是一些关于Node.js里关于express中路由和中间件的一些非常基础的内容,由个人结合资料并总结,后期还会继续进行总结。如果内容有错误,希望可以予以指出和批评!我一定会接受大家的批评并吸取经验,及时的做出改正!!!✨