路由:实际上就是映射关系
现实中的路由案例:打10086时候 有那些按键 按键1-------业务1 按键2------业务2
在这里:路由=按键与服务之间的映射关系
Express中的路由:是客户端的请求与服务器处理函数之间的映射关系
Express中的路由组成的三部分:
——app.METHOD(PATH,HANDLER)
METHOD---请求类型(GET\POST)
PATH——请求的url地址(与客户端的相关)
HANDLER——处理函数,与之对应的处理函数(映射到服务器端的处理函数)
简单的路由1:get请求类型
- app.get('/user',function(req,res){
- res.send({"name":"zj","age":66,"gender":"男"} )
- })
简单的路由1:post请求类型
- app.post('/user',function(req,res){
- res.send('post请求的响应')
- })
每一个请求到达服务器的时候,需要经过路由的匹配,匹配成功才会调用对应的处理函数
在匹配时,会按照路由的顺序进行匹配,如果请求类型和请求的URL同时匹配成功,则Express会将这次请求,转交给对应的function函数进行处理——客户端的请求会从上到下进行匹配路由
路由最简单的用法:将在服务器上挂载路由——实验案例
首先新建文件夹——然后运行npm init -y——初始化package.json文件
——然后在你的文件夹下安装需要的包-- npm i express



使用: nodemon .\最简单的路由服务器.js启动服务器
-
- //导入express模块
- const express=require('express')
-
- //创建web服务器
- const app=express()
- //挂载路由
- app.get('/',(req,res)=>{
- res.send('处理函数 这是服务器给的 响应客户端的根url的get请求')
- })
- app.post('/',(req,res)=>{
- res.send('处理函数 这是服务器给的 响应客户端的根url的post请求')
- })
-
- //启动服务器、使用80端口
- app.listen(80,()=>{
- console.log('http://127.0.0.1 启动成功')
- })
![]()


但上述的挂载路由(直接挂载在APP上)的方式实际中不常用—— 导致代码量太多,不方便管理--使用路由模块化管理--将路由抽离为单独的模块

- //导入express
- const express=require('express')
- //创建路由对象
- const Router=express.Router()
- //挂载具体路由
- Router.get('/user/a',function(req,res){
- res.send('GET USER A')
- })
- Router.post('/user/b',(req,res)=>{
- res.send('POST USER B')
- })
- //向外导出路由
- module.exports=Router//之前={对象 对象里面是属性 可以做一个省略}
路由模块的注册和使用
使用require导入路由模块,使用app.use(自定义路由模块)注册模块------让路由模块和服务器之间联系起来
原先使用express向外托管静态资源的时候使用过app.use(express.static('文件夹的路径'))
app.use()的作用:用来注册全局中间件--
- //导入express
- const express=require('express')
- //创建路由对象
- const Router=express.Router()
- //挂载具体路由
- Router.get('/user/a',function(req,res){
- res.send('GET USER A')
- })
- Router.post('/user/b',(req,res)=>{
- res.send('POST USER B')
- })
- //向外导出路由
- module.exports=Router//之前={对象 对象里面是属性 可以做一个省略}


为路由模块添加统一的访问前缀——在前面托管静态资源的时候有使用过app.use(express.static('文件夹的路径'))------我们使用url访问静态资源的时候这个文件夹是不会出现在访问路径中——如果希望我们访问的时候有这个地址,我们需要在前面加上一个参数,app.use('/文件夹名字',express.static('文件夹的路径'))——相似

app.use('/api',router)------------在原先路由的访问url中全部加上了一个前缀

