express
介绍
其实就是一个node环境中一种web框架,可以使用express实现一个完整的项目(可以实现前后端分离或者不分离)
官网:https://www.expressjs.com.cn/
基本使用
1、创建项目的目录
2、安装express
npm install express --save
3、创建项目的入口文件
// 载入框架模块
const express = require('express')
// 创建服务
const app = express()
// 设置路由
app.get('/',(request,response)=>{
// request与response 是express在node中内置的http模块的基础上进行封装的对象。所以request与response 可以使用到内置的一些方法以及express额外提供的方法
response.send({id:1})
})
// 启动服务
app.listen(8080,err=>err && console.log('端口号被占用'))
参数获取
get参数
app.get('/users', (request, response) => {
let data = [{
id: 1,
nickname: '西瓜妹妹'
},
{
id: 2,
nickname: '熊文凯'
}
]
// express 将get请求的所有参数信息全部放到了request对象下的query属性中并且还是对象格式
console.log(request.query)
let responseData = data.filter(item => item.id == request.query.id )
response.send(responseData)
})
post参数
静态资源托管
路由
路由的基本使用
1、语法
app.请求方法的同名方法(地址匹配,执行函数)
请求方法的同名方法 表示http协议中请求方式 可以使用get、post、put、delete、all(不限制请求方式)
地址匹配:需要写一个字符串 针对请求的地址进行匹配 千万别丢了/
执行函数:表示请求到达后的处理方式
2、基本使用
app.all('/cart',(request,response)=>{
response.send('cart')
})
// 限制只能get方式
app.get('/goods',(request,response)=>{
response.send('ok')
})
app.post('/login',(request,response)=>{
console.log(request.body)
response.send('ok')
})
路由模块化
基本模块化
如果将所有的路由信息全部设置到index.js中会导致整个项目的代码全部写到了一个文件中。所以需要实现将路由
抽离出入口文件
1、抽离路由
2、导入路由
按照功能模块拆分
1、按照模块划分商品模块
2、按照模块划分用户
3、路由的路口文件载入
路由自动载入
中间件
中间件介绍
中间件就是请求被接受到请求处理过程中先做某一些操作。中间件的本质就是一个函数。
例如需要实现接口 验证用户必须登录,如果每次都在接口的逻辑层处理登录问题会导致代码量变大
中间件分类
1、内置中间件
2、自定义中间件
3、第三方中间件
内置中间件
内置中间件就是在express的源码中已经实现了的功能,可以直接使用,例如前面使用接受post参数。可以通过
app.use使用到处理JSON与表单格式的数据自动转换为对象。自动在请求对象下增加了body属性
自定义中间件
自定义中间件使用
//1.导入模块
const express = require('express');
//2.创建服务器
let app = express();
// 自定义中间件
let checkUserLogin = (request,response,next)=>{
// 使用get携带参数表示是否已经登录
if(request.query.username == 'admin'){
// 在中间中修改对象 使用该中间件的都可以正常获取对象下的属性
request.loginUser = 'admin'
// 表示继续向下执行
next()
}else{
response.send('没登录先去登录')
}
}
// 模拟用户的登录操作
app.get('/login',(request, response) => {
// 重定向到指定的地址
response.redirect('/?username=admin')
})
app.get('/', checkUserLogin ,(request, response) => {
console.log(request.loginUser)
response.send('ok');
})
//3.开启服务器
app.listen(3000, () => {
console.log('success');
});
全局错误中间件
1、设置模块处理状态码与提示信息的对应
2、设置错误中间件
3、抛出错误
第三方跨域中间件
1、下载
npm install cors
2、使用中间件
cookie与session
cookie
1、流程
2、安装cookie中间
npm install cookie-parser express
3、使用cookie
//1.导入模块
const express = require('express');
const cookieParser = require('cookie-parser')
//2.创建服务器
let app = express();
// 使用cookie中间件
app.use(cookieParser())
app.use(express.static('public'))
app.get('/',(request,response)=>{
console.log(request.cookies)
response.send('ok')
})
app.post('/login',(request,response)=>{
// 验证信息
// 设置cookie
response.cookie('user','admin')
// response.redirect('/')
response.send('登录成功')
})
//3.开启服务器
app.listen(3000, () => {
console.log('success');
});
session
cookie采用的是本地客户端存储的方式记录用户信息。所以安全系数相对低,所以就可以使用session解决,session是将信息保存到服务端