express基本使用和一些经常使用中间件

基本使用

建立服务:

在node环境下,npm i -D express,就能在node中使用express这一框架了。直接引入express模块,引入的是一个函数,直接调用,返回值就是一个服务,而后监听一个端口就完成了javascript

const express = require('express')
let server = express();//不须要new,koa须要new
server.listen(8080);
复制代码

路由

express 自带路由,只要调用server的get,post,和use方法,就能够实现路由,路由参数也能够传*,表示处理全部路径的请求,use方法不传路径也表示处理全部路径的请求前端

server.get('url',fn);//处理get请求
server.post('url',fn);//处理post请求
server.use('url',fn);//处理全部请求
server.use(fn);//处理全部地址的全部请求
复制代码

这三个方法有两个参数,第一个表示路由路径,第二个是回调函数,通过这个路径的某一个(get,post,全部)请求所有由这个回调函数处理。java

回调函数有三个参数:req、res和next,req和res相似原生node的req和res,添加了一些新方法。
next参数用于执行后面的相匹配的路由node

server.get('url',(req,res,next) => {//3个参数,调用next()执行后面的匹配url的路由
  res.send();//发数据,也能够发json,自带end()
})
复制代码

当一个路径能够被多个路由匹配到的是有,先执行最早匹配到的路由回调函数,在该函数中调用next方法,继续匹配后面的路由express

server.get('/a',(req,res,next) => {//处理路径为a的get请求
  console.log('a1');
  next()//执行下一个匹配的路由
});
server.get('/a',(req,res,next) => {//处理路径为a的get请求
  console.log('a2');
  res.send('over');
});
server.listen('8080');
复制代码

上面的代码,访问路径a后, a1和a2都会被打印npm

这也是中间件的实现原理:
数据 -> server.use(中间件) -> 中间件处理全部数据 -> 处理好的数据放入req或res中(req.xxx=data) -> 调用next放行 -> 后面匹配的路由能够在req或res中获得想要的处理好的数据(req.xxx)json

中间件

express.static()

这是一个用来返回静态文件的自带中间件,不须要下载
就是一方法,直接往use()里面加
express.static(root, [options]) 第一个参数是静态文件存储的目录服务器

let server = express();//建立server,直接调用函数就行
server.use(express.static('./static/'));
server.listen('8080');
复制代码

处理以后,前端就能够在root目录中访问静态文件了cookie

body-parser:

用于解析post数据,这玩意er执行后会往req里面塞一个body,body里面就有处理好的数据session

//全部的post请求都通过这个中间件
server.post('*',parser.urlencoded({
  extended: false //给个属性,通常不开
}))
server.post('/reg',(req,res) => {
  console.log(req.body);//在这就能够使用解析好的body数据
})
复制代码

multer:处理文件上传

添加以后,会往req加一个files属性

const multer = require('multer')
let obj = multer({
  dest: '上传的文件所放的路径'
})
server.post(obj.any());//添加以后,会往req加一个files属性
复制代码

cookie-parser

用来操做cookie

const cookieParser = require('cookie-parser');//一个方法
server.use(cookieParser());//使用以后可以使用req.cookie()方法,req.signedCookies
server.get('/a',(req,res) => {
  console.log(req.cookies);
  res.cookie('a',998);//用于设置cookie
  res.send('over');
})
复制代码

cookie方法的使用:
res.cookie(键,值)
res.cookie(键,值,{options})
options: 可选择添加的配置

  • domain:域名
  • path:路径,通常给个/
  • maxAge:最大时长
  • httpOnly:true 只有服务器能看到
  • secure: true //只有https能用
  • signed:true //是否签名

cookie-session:

express中用于处理session的中间件

const cookieSession = require('cookie-session');
server.use(cookieSession({
  keys:['1sfdsa44','asdfdaf'...]//循环密钥
  maxAge:多久过时
}))
复制代码

使用以后能够使用req.session['键']获取或设置session

关于cookie和session的理解:

用户的cookie -> 服务器的密钥签名 -> session_id -> 经过cookie+session_id访问服务器 -> 使用密钥校验cookie和session_id是否匹配

session就像一张身份证,防止有人伪造cookie访问服务器

相关文章
相关标签/搜索