nodeJs,Express中间件是什么与常见中间件
中间件的功能和分类
中间件的本质就是一个函数,在收到请求和返回相应的过程中做一些我们想做的事情。Express文档中对它的作用是这么描述的:
执行任何代码。
修改请求和响应对象。
终结请求-响应循环。
调用堆栈中的下一个中间件。
分类
Express文档中把他们分为了五类,但是他们的原理相同,只是用法不同:
应用级中间件
路由级中间件
错误处理中间件
内置中间件
第三方中间件
下面介绍常用中间件
express.static()
这是一个用来返回静态文件的自带中间件,不需要下载
就是一方法,直接往use()里面加
express.static(root, [options]) 第一个参数是静态文件存储的目录
let server = express();//创建server,直接调用函数就行
server.use(express.static('./static/'));
server.listen('8080');
处理之后,前端就可以在root目录中访问静态文件了
body-parser:
用于解析post数据,这玩意er执行后会往req里面塞一个body,body里面就有处理好的数据
//所有的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访问服务器
nodeJs,Express中间件是什么与常见中间件的更多相关文章
- 下篇:express、koa1、koa2的中间件原理
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载联系作者并保留声明头部与原文链接https://luzeshu.com/blog/express-koa 本博客同步在http://www.c ...
- nodejs+express使用html和jade
nodejs+express经常会看到使用jade视图引擎,但是有些人想要访问普通的html页面,这也是可以的: var express = require('express'); var port ...
- 用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库
小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...
- windows下nodejs express安装及入门网站,视频资料,开源项目介绍
windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件下载地址: ...
- [NodeJs] 用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库
小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...
- nodejs+express工程 在npm install之后或使用npm install bootstrap命令安装bootstrap之后
nodejs+express工程 在npm install之后或使用npm install bootstrap命令安装bootstrap之后引入bootstrap文件 如果你的静态资源存放在多个目录下 ...
- vue+nodejs+express+mysql 建立一个在线网盘程序
vue+nodejs+express+mysql 建立一个在线网盘程序 目录 vue+nodejs+express+mysql 建立一个在线网盘程序 第一章 开发环境准备 1.1 开发所用工具简介 1 ...
- nodejs+express开发blog(1)
前言 Nodejs是一个年轻的编程框架,充满了活力和无限激情,一直都在保持着快速更新.基于Nodejs的官方Web开发库Express也在同步发展着,每年升级一个大版本,甚至对框架底层都做了大手术.在 ...
- NodeJS+Express+mySQL服务端开发详解
随着NodeJS的发展,现在已经被很多人熟知,NodeJS已经成为了前端开发人员必备的技能.本文不会对NodeJS过多介绍 如果你感兴趣可以访问NodeJS 官网, 维基百科 本文是利用NodeJS+ ...
随机推荐
- 策略路由——使用Router-Policy策略路由进行路由协议的引入
1.实验目的:实现R3-R2-R1为访问主线路,R3-R4-R1为访问备份线路 2.实验拓扑及IP,如图; 3.基本配置(端口IP) R1: <Huawei>sys[Huawei]sys ...
- notepad++ 替换回车换行
以" | "为分隔符,换行 结果如下图:
- 测试平台系列(71) Python定时任务方案
大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 定时任务 定时任务,顾名思义: ...
- GDB 调试技巧(不断更新中......)
一.break到不同类的同名函数 方法: 在函数前面加类名以及作用域运算符 eg : break A::func //break 到类A的func函数 程序如下: //gdb_test.cpp #in ...
- LoadRunner12回放与录制
系统版本 本人的操作系统是win10 版本是loadrunner12. 开启loadrunner自带的机票预订服务器 找到loadrunner自带的机票预订测试服务器下图中点击启动 如下图所示代表启动 ...
- vm workstation pro 安装centos7
workstation pro 下载地址 划到页面下方点击下载 安装教程 激活码 16版本 ZF3R0-FHED2-M80TY-8QYGC-NPKYF 15版本 FG78K-0UZ15-085TQ-T ...
- Spring Ioc 容器初始化过程
IOC 是如何工作的? 通过 ApplicationContext 创建 Spring 容器,容器读取配置文件 "/beans.xml" 并管理定义的 Bean 实例对象. 通 ...
- django前后端分离403 csrf token missing or incorrect
根据这个链接https://stackoverflow.com/a/26639895 这是一个django的跨域访问问题. django,会对合法的跨域访问做这样的检验,cookies里面存储的'cs ...
- 跟着老猫来搞GO-容器(1)
前期回顾 前面的一章主要和大家分享了GO语言的函数的定义,以及GO语言中的指针的简单用法,那么本章,老猫就和大家一起来学习一下GO语言中的容器. 数组 数组的定义 说到容器,大家有编程经验的肯定第一个 ...
- R数据分析:如何给结构方程画路径图,tidySEM包详解
之前一直是用semPlot这个包给来进行结构方程模型的路径绘制,自从用了tidySEM这个包后就发现之前那个包不香了,今天就给大家分享一下tidySEM. 这个包的很大特点就是所有的画图原始都是存在数 ...