Node 中 公开资源
express.use(‘/路径/’,express.static(‘./路径/’)) express.use(express.static(‘./路径/’))
- 如果有第一个参数就 必须带上他才能访问
- 如果没有可以直接省略这个路径 直接访问里面的文件
- 会默认访问文件里面的 index.html
Express 处理接口请求
- req.method 可以拿到请求方式
app.get(路径,(req,res) => {})
只能接收get请求 req.query 可以拿到请求携带的参数app.post(路径,(req,res) => {})
只能接收post 请求 想要拿到请求携带的参数就需要配置中间件 body-parser
// 引入 express 内部自带 body-parser
let bodyParser = require('body-parser')
// 配置
app.use(bodyParser());
配置过后就可以通过 req.body 拿到post 请求携带的参数
app.use(路径,(req,res) => {})
get 和post 请求都可以接收到
res 响应体
- res.end() 可以返回响应
- res.send() 可以返回响应
- res.json() 可以返回一个json格式的响应
- res.jsonp() 可以返回一个jsonp响应
- res.status(状态码).send()
给前端返回一个状态码在返回响应可以链式编程 - res.sendFile(path.resole(要渲染的文件路径))
渲染一个html 页面 但是无法渲染静态资源
中间件
中间件的本质就是一个请求处理方法 把用户从请求到响应的整个过程分布到多个中间件中去处理 这样做的目的 是提高代码的灵活性 多态可扩展的
next 管道函数
app.get('/api/*',(req,res,next) => {
console.log(req.query);
console.log(`处理api 下面的所有公共逻辑`);
next()
})
如果第三个参数 有 next 并且执行了就还会往下执行
如果没有第三个参数 下面的 /api/ 的 逻辑就不会执行
有没有 next() 就会决定 放不放行
app.use(地址(选填) , 回调函数 ,next)
如果第一个参数不填 就会默认获取所有请求 如果不next()
就无法执行其他请求方法
可以在请求体 上面 绑定一个属性 会一直向下传递
后端跳转
res.redirect(路径)
抛出错误并结束程序运行
throw new Error(报错信息)
Session 身份验证
HTTP是一种没有状态的协议,也就是它并不知道是谁访问。客户端用户名密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证
Session 思想
1、客户端用户名跟密码请求登录
2、服务端收到请求,去库验证用户名与密码
3、验证成功后,服务端种一个cookie或发一个字符到客户端, 同时服务器保留一份session
4、客户端收到响应以后可以把收到的字符存到cookie
5、客户端每次向服务端请求资源的cookie会自动携带
6、服务端收到请求,然后去验证cookie和session, 如果验证成功,就向客户端返回请求的库数据
Session存储位置:服务器内存,磁盘,或者数据库里、
Session存储内容: id,存储时间,用户名等说明一下登录的用户是谁
客户端携带 cookie自动带,localStorage手动带
cookie中间件
安装
npm install cookie-session
配置中间件
app.use(cookiesession({
keys: ["aa","bb","cc"], //代表加密层级 必填
name: 'cookie', //后端给前端种cookie的 名字
maxAge: 10000 , //代表过期时间 毫秒单位
}))