Express 笔记
Express
入门
-
send()
它里面封装了 write() 和 end() 方法
它还可以返回 html 结构
它默认返回 200,若你想返回 404,可以这样
res.status(404).send('操作失败')
-
路由支持 字符串模式 匹配,还有正则匹配
// 匹配 /ab/***********(/ab是不可以的),冒号叫做占位符,因为id的值是随机的,所以在这里占个位 app.get('/ab/:id', (req, res, next) => { const id = req.params.id res.send('hello') }) // 匹配含有a的路径,这里就是一个正则表达式 app.get(/a/, (req, res, next) => { res.send('hello') })
中间件
下面这样的一个函数,我们就称之为中间件
next()
就是进入下一个中间件,若调用res.send('xxx')
则会结束这个流程
-
应用级别中间件(用 app 对象调用的,就是应用级别中间件)
// 这种不带路径的,每个请求都会执行该中间件 // 但是必须写在该请求的前面,静态资源也不例外 // 因为在`express框架`中,写在前面的中间件,会先执行 app.use((req, res, next) => { next() // 中间件要记的放行或者结束,不然页面会一直转圈圈(pending状态) }) // 这种带路径的,只有这个路径下的,才会进入这个中间件 app.use('/test', () => { // ... })
-
路由级别中间件(用 express.Router() 调用的)
const router = express.Router() router.post('/login', (request, response) => { // ... }) // 将路由挂载至应用 app.use('/user', router)
-
错误处理中间件(四个参数的就是错误处理中间件,原来它真的是根据参数来定的)
// 它要放到最后面,意味着前面的中间件都没有结束,那么就是报错了 app.use((err, req, res, next) => { // ... })
-
内置中间件
app.use(express.static('../name')) // 绝对路径 或 相对路径 // 不要被 __dirname 迷惑了,它只是绝对路径而已 // 注意:这里的相对路径是你在控制台的 执行node指令 的路径为相对路径,与版本无关 app.use('/static', express.static('../name')) // 代表 /static/xxx
获取请求参数
-
query 参数
形如 xxx?name=jack
通过
req.query
可以拿到 -
body 参数
需要配置一个中间件,body-parse,目前的 express 是自带的
那我们应该写在哪里呢?肯定是在路由的前面,不然还解析个屁
app.use(express.urlencoded()) // 通过 req.body // 不过只能拿 行内的 那种post请求参数 // 这种格式叫做 Content-Type: application/x-www-form-urlencoded // 这个说法不知道对不对,反正无论配不配置,都只能拿以上那种参数 // { extended: false}表示在方法的内部使用querystring系统模块来处理POST请求参数; // { extended: true}表示使用qs第三方模块进行处理。 app.use(express.json()) // 通过 req.body // 这个中间件对应这种格式: // Content-Type: application/json // 发送方式见图一 // 就是 axios({method: 'post', data: data}) 的格式 const formidable = require('express-formidable') app.use(formidable()) // 通过 req.fields 表单默认的是 Content-Type: application/x-www-form-urlencoded 若是 Content-Type: multipart/form-data 是上传文件时用的
图一,这也是axios.post('xxx', data)模式
最后
相关链接:
https://www.bilibili.com/video/BV1NG411g7p6?p=4&share_source=copy_web
像模板引擎的话,这个视频里面有讲;像.jade、.ejs应该都类似于jsp吧,看来每个后端都有这样的东西
这一路,灯火通明