昝梓菱 发表于 2025-12-23 16:45:00

express中间件

express中间件学习

安装nodemon

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

安装express

npm install express
欢迎使用express

const express = require('express')

const app = express()

app.listen(8000,()=>{
console.log('欢迎使用express')
})中间件的本质:一个回调函数

如果当前中间件功能没有结束请求-响应周期,则必须调用next()将控制权传递给下一个中间件功能,否则,请求将被挂起

app.get('/',(req,res,next)=>{
next()// 中间件回调参数,调用栈中下一个中间件
})express提供的两种应用方式

app/router.use

app.use('/login',(req,res,next)=>{
    console.log('pathmiddleware')
})路径匹配,methods(GET、POST等方式都能匹配)

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

app/router.methods

app.get('/login',(req,res,next)=>{
    console.log('path and methods middleware')
})连续注册多个中间件

app.get('/home',(req,res,next)=>{
console.log('注册了一个连续注册中间件01')
next()
},(req,res,next)=>{
console.log('注册了一个连续注册中间件02')
res.end('连续注册中间件')
})数据解析

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

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

使用multer插件,解析form-data

安装npm install multer
使用
//解析json
const upload = multer()

app.post('/login',upload.any(),(req,res,next)=>{
   
console.log(req.body)

res.end('登录成功')

})


//解析文件
const storage = multer.diskStorage({
destination:function(req,file,cb){
    cb(null,'./uploads/')
},
filename:function(req,file,cb){
    const filename = Date.now() + '-' + file.originalname
    cb(null,filename)
}
})

const upload = multer({
// dest:'./uploads/'
storage
}) // 配置multer中间件,指定文件上传的存储目录

// 注意 upload.any()与upload.single()需要分开解析,不然解析两次会导致报错。
app.post('/upload',upload.single('file'),(req,res,next)=>{
console.log(req.file) // 文件信息
res.end('文件上传成功~')

})解析params和query的get请求参数

app.get('/user/:id/:name',(req,res,next)=>{
console.log('params:',req.params)
res.end('用户参数获取成功')
})
app.get('/login',(req,res,next)=>{
console.log('query:',req.query)
res.end('用户登录成功')
})路由

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


[*]一个Router实例拥有一个完整的中间件个路由系统。因此,它也被称为迷你应用程序(mini-app)
创建一个路由文件router/users.js

//router/users.js

const express = require('express')

const router = express.Router()

// 用户列表接口

router.get('/users',(req,res,next)=>{

res.json(['张三','李四','王五'])
})

// 用户详情接口
router.get('/users/:id',(req,res,next)=>{

res.json(`用户${req.params.id}的信息`)
})


// 创建用户接口
router.post('/user',(req,res,next)=>{
res.json('创建用户成功')
})


module.exports = router在app中应用并注册路由

const express = require('express')

const app = express()

//引入路由
const userRouter = require('../02_express/routers/users')

// 注册路由中间件
app.use('/user',userRouter)


app.listen(8000,()=>{
console.log('express server success')
})静态资源部署

app.use(express.static('./public'))//相对路径和绝对路径都可
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

章海 发表于 2025-12-24 20:13:39

感谢分享,学习下。

柴古香 发表于 2026-1-8 19:39:08

yyds。多谢分享

俏襟选 发表于 2026-1-10 11:40:13

不错,里面软件多更新就更好了

缍米 发表于 2026-1-13 06:00:18

懂技术并乐意极积无私分享的人越来越少。珍惜

康器 发表于 2026-1-13 22:31:49

谢谢分享,辛苦了

奚娅琼 发表于 2026-1-15 00:31:38

前排留名,哈哈哈

愆蟠唉 发表于 2026-1-15 13:38:24

很好很强大我过来先占个楼 待编辑

忌才砟 发表于 2026-1-16 12:58:36

感谢发布原创作品,程序园因你更精彩

柏雅云 发表于 2026-1-16 15:27:33

喜欢鼓捣这些软件,现在用得少,谢谢分享!

全叶农 发表于 2026-1-22 22:00:34

鼓励转贴优秀软件安全工具和文档!

印萍 发表于 2026-1-23 10:32:23

新版吗?好像是停更了吧。

睁扼妤 发表于 2026-1-25 11:44:44

yyds。多谢分享

忿惺噱 发表于 2026-1-27 03:24:38

热心回复!

簑威龙 发表于 2026-1-28 18:59:47

感谢分享,学习下。

觞刈 发表于 2026-1-29 05:51:06

yyds。多谢分享

卢莹洁 发表于 2026-1-30 09:50:59

不错,里面软件多更新就更好了

赐度虻 发表于 2026-2-2 09:20:52

新版吗?好像是停更了吧。

董绣梓 发表于 2026-2-4 09:52:48

谢谢分享,辛苦了

更成痒 发表于 2026-2-5 16:30:46

很好很强大我过来先占个楼 待编辑
页: [1] 2
查看完整版本: express中间件