1. 初始化项目
2. 安装 express
3. 创建express 应用程序
const express = require('express');
let server = express();
server.listen(8080);
4. res.send()
server.get('/a', (req, res, next) => {
// res.send('aaa');
res.send({
a: 1
})
});
5. next()
server.get('/a', (req, res, next) => {
console.log(1);
next();
});
server.get('/a', (req, res, next) => {
console.log(2);
})
传参:可以往对象身上放。
6. 中间件 express.static()
- express 自带
- 设置静态文件目录
server.use(express.static('./static/'));
7. 处理请求数据
-
GET 数据
server.get('/a',(req,res,next)=>{ console.log(req.query); res.send(); })
-
POST 数据 解析 — 使用中间件
- body-parser 处理普通数据 (不能处理文件)
- 安装
cnpm i body-parser -D
-
server.use(body.urlencoded({ extended: false })); server.post('/reg', (req, res, next) => { console.log(req.body); });
- multer 处理文件数据
- 安装
cnpm i multer -D
-
// 文件上传目录 let obj = multer({ dest:'./static/upload' }); server.use(obj.any()); server.post('/reg', (req, res, next) => { console.log(req.files); });
8. cookie
- 存储在浏览器,请求服务器的时候,会随便发给服务器
- 服务器
- 安装
cnpm i cookie-parser -D
-
server.use(cookieParser()); server.get('/a', (req, res) => { // 获取 cookies console.log(req.cookies); // 设置cookie 有效期 res.cookie('amount', '9999', { // domain:'aaa.com', // path:'/', maxAge: 14 * 86400 * 1000 }); res.send(); });
- 签名后的cookie
-
// 设置签名秘钥 server.use(cookieParser( 'afdsafdafsasdfdfsaf' )); server.get('/a', (req, res) => { console.log('未签名', req.cookies); //未签名的 console.log('签名后', req.signedCookies); //签名的 res.cookie('amount', 999, { // httpOnly: true, // 只能服务器操作 maxAge: 14 * 86400 * 1000, //secure: true, //只能 https 才能使用 cookie signed: true // 是不是已签名 }) res.send(); });
9. session
- 存储在服务器,不是独立的,基于 cookie
- 安全问题:session劫持
- 安装
cnpm i cookie-session -D
-
server.use(cookieSession({ name: 'session', // 循环秘钥 keys: ['afdsaf', 'afdafdsaf', 'fdafdsaifasofjo'], maxAge: 20 * 60 * 1000 //20分钟 })); server.get('/a', (req, res) => { console.log(req.session); if (!req.session.views) { req.session.views = 1; } else { req.session.views++; } res.send(`${req.session.views}次`); });