目录
1 搭建服务器
1、引入express
2、创建应用程序
3、监听端口号
let express = require('express');
let app = express();
// 使用Express中唯一的一个中间件 -- static 方法实现目录的静态化
app.use('/web', express.static('/web'));
app.listen(3000, () => {
console.log('监听在3000端口')
})
1 返回数据:
通过end方法数据
res.end('success'); 不支持对象 只能接收string || buffer
res.end(JSON.stringify({ errno: 0, msg: '返回数据成功' }));
通过json方法数据
res.json({ errno: 0 }); 可以接收对象
res.json('success'); 还可以接收字符串
通过send方法返回数据
res.send('success');
res.send({ errno: 1 });
app.get('/test', (req, res, next) => {
console.log(req.query);
// res.end('scuuess');
// res.end(JSON.stringify({errno: 0, msg: 'success' }));
// res.json('success');
// res.json({ errno: 0, msg: 'hello' });
// res.send('success');
// res.send({ errno: 0, msg: 'hello' });
})
2 处理get请求
next() 放行函数 一旦执行该函数 即可在下面继续处理该接口
app.get('/test', (req, res, next) => {
console.log(111, req.query);
next();
})
app.get('/test', (req, res, next) => {
console.log(222, req.query);
res.end('success')
})
3 处理post请求
如果想要获取post请求传递的数据,则需要借助中间件body-parse之后还要进行配置
// 引入body-parser
let bodyParser = require('body-parser');
// 配置
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/demo', (req, res) => {
console.log(req.query);
console.log(req.body);
res.end('success');
})
4 路由对象
使用方式:
1通过Express获取路由模块,
2 创建路由实例化对象,并配置路由
3 安装路由对象
// 1 引入express
let express = require('express');
// 引入body-parser
let bodyParser = require('body-parser');
// 2 创建应用程序
let app = express();
// 实现访问即可打开首页a
app.use(express.static('./web'));
// 配置bodyParser
app.use(bodyParser.urlencoded({ extended: false }));
// 引入router
let { Router } = require('express');
// 等价于:
// let express = require('express');
// let Router = express.Router();
let router = new Router();
router.get('/test', (req, res) => {
console.log(req.query);
res.json({ errno: 0, msg: 'success' });
router.post('/demo', (req, res) => {
console.log(req.body);
res.json({ errno: 0, msg: 'demo返回' });
// 3 监听端口号
app.listen(3000, () => console.log('监听在3000端口号'));
上面这种写法没有简洁 所以应该分开不同的js,引入
// 1 引入express
let express = require('express');
// 引入body-parser
let bodyParser = require('body-parser');
// 2 创建应用程序
let app = express();
// 实现访问即可打开首页a
app.use(express.static('./web'));
// 配置
app.use(bodyParser.urlencoded({ extended: false }));
// ---------------------------
// 引入router 默认就引入index.js
let router = require('./router');
// ---------------------------
// 挂载router
app.use(router);
// 3 监听端口号
app.listen(3000, () => console.log('监听在3000端口号'));
上面页面引入的index.js:
// index.js 中 记得暴露router
let { Router } = require('express');
let router = new Router();
// 处理get请求 又引入了test.js
router.get('/test', require('./test'));
// 处理post请求 又引入了demo.js
router.post('/demo', require('./demo'));
module.exports = router;
上面简写
module.exports = new Router() .get('/test', require('./test')) .post('/demo', require('./demo'))
test.js
module.exports = (req, res) => { console.log(req.query); res.json({ errno: 0, msg: 'test返回' }); }
demo.js
module.exports = (req, res) => { console.log(req.body); res.json({ errno: 0, msg: 'demo返回' }); }
2 Cookie
// 引入
let cookieParser = require('cookie-parser');
// 配置
app.use(cookieParser());
res.cookie() 设置cookie
req.cookies 访问cookie
app.post('/login', (req, res) => {
let { username, password } = req.body;
// 设置cookie
res.cookie('name', username, {maxAge: 60000});
res.cookie('pws', password, {maxAge: 60000});
res.end('successlogin');
})
app.get('/check', (req, res) => {
// 访问cookie
console.log('打印cookie值', req.cookies);
res.end('success');
})
3 session
req.session.name = 设置session
req.session 访问session
// 引入session
let expressSession = require('express-session');
// 配置session
app.use(expressSession({
// 配置密钥
secret: 'askdjlasjd',
// 每一次访问session的时候,是否重置
resave: false,
// 在初始化的时候是否设置session
saveUninitialized: true
}))
app.post('/login', (req, res) => {
let { username, password } = req.body;
// 设置session
req.session.username = username;
req.session.password = password;
res.end('success, set session');
})
app.get('/check', (req, res) => {
console.log('查看session', req.session);
res.end('success, get session');
})
//查看session Session {
// cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
// username: 'koma',
// password: 'wsq123'
//}
![点击并拖拽以移动 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://i-blog.csdnimg.cn/blog_migrate/59ca1445ba316c5ad7afaa2f31f93f5a.gif)
4 Tooken
jwt.sign 加密token
jwt.verify 解析token
// 引入jwt
let jwt = require('jsonwebtoken');
// 定义指定的加密字符串
let secret = 'kljajsdlkjasd';
// 处理post请求
app.post('/login', (req, res) => {
// 加密token串
jwt.sign(req.body, secret, (err, result) => {
// 捕获异常
if (err) {
res.send({ errno: 1, msg: '加密token串失败了' })
return;
}
// 返回成功的消息
res.send({ errno: 0, token: result })
})
})
// 处理sendToken接口
app.post('/sendToken', (req, res) => {
// 获取token
var token = req.body.token;
// 解析token
jwt.verify(token, secret, (err, result) => {
// console.log(err, 111, result);
// 捕获异常
if (err) {
res.send({ errno: 1, msg: '解析token串失败了' });
return;
}
// 返回成功消息
res.send({ errno: 0, data: result })
})
})
![点击并拖拽以移动 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://i-blog.csdnimg.cn/blog_migrate/59ca1445ba316c5ad7afaa2f31f93f5a.gif)