express
express是基于Node.js平台,快速·开放·极简的web开发框架
web网站服务器 API接口服务器
通过res.send()方法,可以把处理好的内容,发送给客户端
通过req.query对象,可以访问到客户端通过查询字符串的形式,发送到服务器的参数
通过req.params对象,可以访问到URL中,通过:匹配到的动态参数
通过express.static()函数,可以非常方便地创建一个静态资源服务器,托管多个静态资源目录
路由
路由指的是客户端的请求与服务器处理函数之间的映射关系,路由分为三部分,分别是请求类型,请求的URL地址,处理函数
中间件
特指业务流程的中间处理环节
express中间件的本质是function处理函数
next函数是实现多个中间件连续调用的关键,把流转关系转交给下一个中间件或路由
全局生效的中间件
客户端发起的任何请求,到达服务器之后,都会触发的中间件叫全局生效的中间件
通过调用app.use(中间件函数),即可定义一个全局生效的中间件
中间件的作用:多个中间件之间,共享一份req和res,再上游的中间件
局部生效的中间件
不使用app.use()定义的中间件,叫局部生效的中间件
定义多个局部中间件
五个使用注意事项
一定要在路由之前注册中间件
客户端发送过来的请求,可以连续调用多个中间件进行处理
执行完中间件业务代码之后,必须调用next()函数
防止代码逻辑混乱,调用next函数不要再写额外代码
连续调用多个中间件时,多个中间件之间,共享req和res对象
中间件的分类
应用级别的中间件
绑定到app实例上的中间件
路由级别的中间件
绑定到express.Router()实例上的中间件
错误级别的中间件
专门用来捕获整个项目中发生的异常错误,从而防止项目异常崩溃的问题
Express内置的中间件
express.static快速托管静态资源的内置中间件
express.json解析JSON格式的请求体数据
express.urlencoded解析URL-encoded格式的请求体数据
没有配置解析表单数据的中间件,则req.body默认等于undefined
第三方中间件
非express官方内置的,而是由第三方开发出来的中间件,叫做第三方中间件
自定义中间件
自己动手模拟中间件来解析post提交到服务器的表单数据
req的data事件是来获取客户端发送到服务器的数据,数据量比较大,客户端把数据切割后,分批发送到服务器,data事件会出发多次,需要手动对接收到的数据进行拼接
req的end事件是当请求体数据接收完毕之后触发,则在该事件中,能拿到并处理完整的请求体数据
querystring模块,专门用来处理查询字符串,通过这个模块提供的parse()函数,可以把查询字符串解析成对象格式
接口的跨域问题
解决方案:cors
请求:客户端与服务器之间只会发生一次请求
预检请求:客户端与服务器之间会发生两次请求,OPTION预检请求成功之后,才会发起真正的请求