持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情
“金秋十月,我要连续30天更文,做劳模,拿手机摄影神器!点击查看活动详情 “即可成功参与
应用级别的中间件
通过app.use()或app.get()或app.pst(),绑定到app实力上,叫做应用级别的中间件
只要这个中间件最终绑定到app这个实例上了,那就是应用级别中间件
app.use((req,res,next)={//应用级别的中间件(全局中间件)
next()
})
app.get('/user',fn,(req,res)=>{//应用级别的中间件(局部中间件)
res.send("hahha")
})
路由级别的中间件
绑定到express.Router()实例上的中间件,叫做路由级别的中间件(应用级别绑定到app实例上,路由级别绑定到router实例上)
const app=express()
const router=expresss.Router()//路由实例
router.use((req,res,next)=>{ //路由级别的中间件
console.log("222")
next()
})
错误级别的中间件
作用:专门来捕获整个项目中发生的异常错误,从而防止项目异常崩溃的问题
格式:错误级别中间件的function处理函数中,必须有4个参数,分别是(err,req,res,next)
app.get('/',(req,res)={ 1、路由
throw nex Error("服务器内部发生错误") 2、抛出一个自定义错误
res.send("haha")
})
app.use((err,req,res,next)=>{ 3、错误级别的中间件
console.log("发生了错误"+err.message) 4、在服务器上打印错误
res.send("eroor"+err.message) 5、向客户端响应错误相关的内容
})
express 内置的中间件
app.use(express.static('文件名')) //快速托管静态资源的内置中间件
app.use(express.json())//解析json格式的请求体数据(application/json)
app.use(express.unlencoded({extended:false}))//解析URL-encoded格式的请求体数据(application/x-www-forom-urlencoded)
如果不解析客户端发送过来的数据,res.body则为undefined
如果解析了客户端发送过来的数据,res.body则显示该格式的数据
托管静态资源中间件
通过express.static()方法,可以非常方便的创建一个静态资源服务器
app.user(express.static('文件名1')) //可以直接访问这个文件里的所有资源,并且这个文件夹名不会出现在访问的路径和中了
app.user(express.static('文件名2'))//想要托管多个文件夹,多次调用这个函数即可,根据添加顺序查找需要的文件
eg:这个public文件夹下的内容对外开放访问
app.user(express.static('public'))// 这个文件夹里存放了css文件、JavaScript文件
http://localhost:3006/css/style.css
http://localhost:3006/JavaScript/index.js
Express在指定的静态目录中查找文件,并对外提供资源的访问路径,因此,存放静态文件的目录名不会出现在URL中
挂载路径访问前缀
如果希望在托管的静态资源访问路径之前,挂载路径前缀,可以使用如下方法
app.user('文件名',express.static('文件名')) //可以直接访问这个文件里的所有资源,路径中也会显示这个文件名
eg:这个public文件夹下的内容对外开放访问
app.user(public,express.static('public'))// 这个文件夹里存放了css文件、JavaScript文件
http://localhost:3006/public/css/style.css
http://localhost:3006/public/JavaScript/index.js
第三方的中间件
由第三方开发出来的中间件,使用前需要下载第三方中间件