后端

Express

Express 的基本使用

基础示例

一个接口里面只能有一个 res.send 生效,如果有多个 res.send 时,要注意使用 return。 换言之,不是写了 res.send 之后,后面的代码就不执行了

步骤 1-4 如下
导入并注册
为 userRouter 所有的地址增加一个 api 前缀

中间件

一定要注意写中间件写的顺序

基本使用

此处的cb0,cb1,cb2的中括号可以省略

全局的中间件

调用所有的接口都会触发这个中间件

一个请求可能会有多个中间件,多个中间件共同享用的一份 res,req
所以可以在前面的中间件中设置一些自定义属性或者方法,提供给下游的中间件或者路由使用
可以有多个全局的中间件,按照注册的顺序执行

绑定在 router 上的中间件,只对这个路由实例有效

一般使用 app.use 全局注册,注册在路由后 捕获异常,防止项目要崩溃

express.json 解析 json 格式的请求体数据
express.urlencoded 解析 urlencoded 格式的请求体数据
express.static 托管静态资源,如图片、html、css

注意:不对请求体的数据做任何解析,直接拿 req.body 会 undefined

第三方中间件

自定义中间件

监听 req 的 data 和 end
自定义一个响应中间件

放在身份认证前面
踩坑:验证 token 的中间件写在了响应中间件前面,调用需要身份认证的接口时,如果 token 验证失败报错了,就直接跳过响应中间件进入错误处理中间件了,此时在错误中间件中使用响应中间件的内容会出问题

使用方法

请求头

Express 操作 MySQL

安装并配置依赖

npm install mysql

增加

插入对应的字段

更改指定的值

直接删除一条数据
但是不建议这样做,数据一旦删除恢复就比较麻烦
使用标记删除,可以在表中设置一个类似 state 的状态字段,使用 update 更改这条数据的状态

JWT 认证(json web token)

JWT 由三部分组成,分别是 Header(头部)、Payload(有效载荷)、Signature(签名),通常用 . 分隔开
Header 和 Signature 是安全性相关的部分
Payload 是用户信息经过加密之后的字符串

使用 JWT

npm install jsonwebtoken express-jwt

基础使用

数据库加密

对用户的密码进行加密处理

npm i bcryptjs

后端永远不要相信前端传来的数据,即使前端已经验证了 安装验证规则包

npm install joi

安装中间件,实现对表单数据的验证

npm install @escook/express-joi

新建用户信息模块?schema/user.js 定义验证规则