express框架使用
- 安装
- npm install express express-static
- 配置
- 创建服务 var server=express();
- 监听 server.listen(8080);
- 处理请求 server.use('地址',function(req,res){ });
- 接收请求(3种方法)
- .get(‘/’,function(req,res){});
- .post(‘/’,function(req,res){});
- .use(‘/’,function(req,res){}); //通吃,可以接收get和post
- 相应数据
express是一个非侵入式框架
即express和原生的区别只在于express仍能使用原生的函数如res.write();和res.end();
但express比原生多了一个res.send();
这个函数可以直接发送json数据
总的来说,express保留了原生的功能添加了一些方法,增强原有的功能
express-static用法
const expressStatic=requeire('express-static');
server.use(expressStatic('./www'));
GET/POST数据
GET-无需中间件 req.query
POST-需要”body-parser”
server.use(bodyParser.urlencoded({limit:xxx}));
server.use(function(req,res,next){
req.body
});
链式操作
server.use(function(req,res,next){});
server.get(function(req,res,next){}); //server.get(‘/’,function(req,res,next){});
server.post(function(req,res,next){});
next-----下一个步骤
next();
//模拟链式操作
server.use(‘/login’,function(){
mysql.query(function(){
if(有错)
res.emit(‘error’);
else
next();
});
});
中间件(body-parser)
next();
自己写中间件
server.use(function(req,res,next){
var str=’’;
req.on(‘data’,function(data){
str+=data;
});
req.on(‘end’,function(){
req.body=querystring.parse(str);
next();
});
});
cookie和session存在的意义
http 缺点:无状态的 两次请求之间无法判断是不是同一个人
cookie:
cookie:在浏览器保存一些数据,每次请求都会带过来
*不安全、有限(4k)空间非常小省着用
1.读取——cookie-parser cookie-parser
server.use(cookieParser(‘签名’));
server.use(function(){
req.cookies 未签名
req.signedCookies 签名版
});
2.发送——cookie-session
res.secret=’字符串’;
res.cookie(‘名字’,’值’,{path:’/’,maxAge:毫秒,signed:true});
3.删除cookie
res.clearCookie(名字);
session:
session:保存数据,保存在服务端
*安全、无限(取决于服务器大小)
mod:cookie-session
使用:
server.use(cookieParser());
server.use(cookieSession({
key:[]
}))
server.use(‘/’,function(){
req.session
});
删除:
delete req.session
session:基于cookie实现的
*cookie中会有一个session的ID,服务器利用sessionid找到session文件、读取、写入
隐患:session劫持
安全的session:
const express=require('express');
const cookieParser=require('cookie-parser');
const cookieSession=require('cookie-session');
var server=express();
//多个密钥
var arr[];//定义一个空数组
for(var i=0;i<10000;i++)
{
arr.push('sig_'+Math.random()); //1万个随机密钥
}
server.use(cookieParser());
server.use(cookieSession({
name:'sess', //随意改名
keys:arr,
maxAge:1000*3600*2
}));
//session
server.use('/',function(req,res){
if(req.session['count']==null){
req.session['count']=1;
}else{
req.session['count']++;
}
console.log(req.session['conunt']);
res.send('ok');
});
server.listen(8081);