找回密码
 立即注册
首页 业界区 安全 express中间件

express中间件

昝梓菱 6 小时前
express中间件学习

安装nodemon

直接在cmd中全局安装
npm install -g nodemon
安装完成后如果nodemon -v能返回版本号,则安装成功。

安装express

npm install express
欢迎使用express
  1. const express = require('express')
  2. const app = express()
  3. app.listen(8000,()=>{
  4.   console.log('欢迎使用express')
  5. })
复制代码
中间件的本质:一个回调函数

如果当前中间件功能没有结束请求-响应周期,则必须调用next()将控制权传递给下一个中间件功能,否则,请求将被挂起
  1. app.get('/',(req,res,next)=>{
  2.   next()  // 中间件回调参数,调用栈中下一个中间件
  3. })
复制代码
express提供的两种应用方式

app/router.use
  1. app.use('/login',(req,res,next)=>{
  2.     console.log('path  middleware')
  3. })
复制代码
路径匹配,methods(GET、POST等方式都能匹配)

中间件执行顺序:按照能匹配的中间件注册顺序执行。

app/router.methods
  1. app.get('/login',(req,res,next)=>{
  2.     console.log('path and methods middleware')
  3. })
复制代码
连续注册多个中间件
  1. app.get('/home',(req,res,next)=>{
  2.   console.log('注册了一个连续注册中间件01')
  3.   next()
  4. },(req,res,next)=>{
  5.   console.log('注册了一个连续注册中间件02')
  6.   res.end('连续注册中间件')
  7. })
复制代码
数据解析

app.use(express.json()) // 解析jion

app.use(express.urlencoded({extend:true})) // 解析urlencoded

使用multer插件,解析form-data

安装  npm install multer
使用
  1. //解析json
  2. const upload = multer()
  3. app.post('/login',upload.any(),(req,res,next)=>{
  4.      
  5. console.log(req.body)
  6.   
  7.   res.end('登录成功')
  8. })
  9. //解析文件
  10. const storage = multer.diskStorage({
  11.   destination:function(req,file,cb){
  12.     cb(null,'./uploads/')
  13.   },
  14.   filename:function(req,file,cb){
  15.     const filename = Date.now() + '-' + file.originalname
  16.     cb(null,filename)
  17.   }
  18. })
  19. const upload = multer({
  20.   // dest:'./uploads/'
  21.   storage
  22. }) // 配置multer中间件,指定文件上传的存储目录
  23. // 注意 upload.any()与upload.single()需要分开解析,不然解析两次会导致报错。
  24. app.post('/upload',upload.single('file'),(req,res,next)=>{
  25.   console.log(req.file) // 文件信息
  26.   res.end('文件上传成功~')
  27. })
复制代码
解析params和query的get请求参数
  1. app.get('/user/:id/:name',(req,res,next)=>{
  2.   console.log('params:',req.params)
  3.   res.end('用户参数获取成功')
  4. })
  5. app.get('/login',(req,res,next)=>{
  6.   console.log('query:',req.query)
  7.   res.end('用户登录成功')
  8. })
复制代码
路由

我们可以使用express.Router来创建一个路由


  • 一个Router实例拥有一个完整的中间件个路由系统。因此,它也被称为迷你应用程序(mini-app)
创建一个路由文件router/users.js
  1. //router/users.js
  2. const express = require('express')
  3. const router = express.Router()
  4. // 用户列表接口
  5. router.get('/users',(req,res,next)=>{
  6.   res.json(['张三','李四','王五'])
  7. })
  8. // 用户详情接口
  9. router.get('/users/:id',(req,res,next)=>{
  10.   res.json(`用户${req.params.id}的信息`)
  11. })
  12. // 创建用户接口
  13. router.post('/user',(req,res,next)=>{
  14.   res.json('创建用户成功')
  15. })
  16. module.exports = router
复制代码
在app中应用并注册路由
  1. const express = require('express')
  2. const app = express()
  3. //引入路由
  4. const userRouter = require('../02_express/routers/users')
  5. // 注册路由中间件
  6. app.use('/user',userRouter)
  7. app.listen(8000,()=>{
  8.   console.log('express server success')
  9. })
复制代码
静态资源部署
  1. app.use(express.static('./public'))//相对路径和绝对路径都可
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册