浅谈express 中间件机制及实现原理

前端之家收集整理的这篇文章主要介绍了浅谈express 中间件机制及实现原理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

简介

中间件机制可以让我们在一个给定的流程中添加一个处理步骤,从而对这个流程的输入或者输出产生影响,或者产生一些中作用、状态,或者拦截这个流程。中间件机制和tomcat的过滤器类似,这两者都属于责任链模式的具体实现。

express 中间件使用案例

拦截 app.get('/hello',function (req,res) { res.send('Hello World!'); });

模拟中间件机制并且模拟实现解析request的中间件

首先模拟一个request

一个http请求分为请求行、请求头、和请求体,这三者之间通过\r\n\r\n即一个空行来分割,这里假设已经将这三者分开,requestLine(请求行)中有方法类型,请求url,http版本号,这三者通过空格来区分,headers(请求头)中的各部分通过\r\n来分割,requestBody(请求体)中通过 & 来区分参数

模拟中间件机制

约定 中间件一定是一个函数并且接受 request,response,next三个参数

= this.chain.length) return; let middleware = this.chain[this.index]; this.index++; middleware(this.request,this.response,this.next.bind(this)); },}

对 request 处理的中间件

function headersParser(req,next) {
let items = req.headers.split('\r\n');
let header = {}
for(let i in items) {
let item = items[i].split(':');
let key = item[0];
let value = item[1];
header[key] = value;
}
req.header = header;
next(); //执行下一个中间件
}

function bodyParser(req,next) {
let bodyStr = req.requestBody;
let body = {};
let items = bodyStr.split('&');
for(let i in items) {
let item = items[i].split('=');
let key = item[0];
let value = item[1];
body[key] = value;
}
req.body = body;
next(); //执行下一个中间件
}

function middleware3(req,next) {
console.log('url: '+req.url);
console.log('methond: '+req.methond);
console.log('version: '+req.version);
console.log(req.body);
console.log(req.header);
next(); //执行下一个中间件
}

测试代码

整体代码

运行结果

将以上整体代码运行后将打印以下信息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

猜你在找的Express 相关文章