博客
关于我
express 的中间件
阅读量:88 次
发布时间:2019-02-25

本文共 3471 字,大约阅读时间需要 11 分钟。

static

static 中间件主要用来提供静态资源服务 ,可以设置静态资源的目录 设置响应头 及缓存等等配置,代码如下

function static(root,options = {   }){       let {    dotfiles = "ignore" ,etag=true,lastModified,maxAge=0, setHeaders } = options;    return function(req,req,next){           let {    pathname } = url.parse(req.url,true);        let file = path.join(root,pathname);        let parts = file.split(path.sep);        let isDotFile = parts[parts.length-1][0]==".";        if(isDotFile && dotfiles=="deny"){     //拒绝访问.文件            res.setHeader("Content-Type","text/html");            res.statusCode = 403;            return res.end(http.STATUS_CODES[403]);        }        fs.stat(file,function(error,stat){               if(error){                   next()            }else{                   if(etag){                       res.setHeader("ETag",stat.mtime.toLocaleDateString());                }                if(lastModified){                       res.setHeader("Last-Modified",stat.mtime.toUTCString())                }                if(typeof setHeaders =='function'){                       setHeaders(req,req,function(params){                           console.log(params);                    });                }                res.setHeader("Cache-Control",`max-age=${     maxAge}`);                res.setHeader("Content-Type",mime.getType(file))                 fs.createReadStream(file).pipe(res);            }        })    }};

bodyParser

bodyParser 中间件用来解析请求参数

json

function json(options){       return function(req,res,next){           let contentType = req.headers["content-type"];        if(contentType=="application/json"){               const buffer = [];            req.on("data",function(data){                   buffer.push(data);            });            req.on("end",function(){                   let result = buffer.toString();                req.body = JSON.parse(result);                next()            })        }else{               next();        }    }}

urlencoded

function urlencoded(options){       let {    extended } = options;    return function(req,res,next){           let contentType = req.headers["content-type"];        console.log(contentType);        if(contentType=="application/x-www-form-urlencoded"){               const buffer = [];            req.on("data",function(data){                   buffer.push(data);            });            req.on("end",function(){                   let result = buffer.toString();                if(extended){                       //qs 可以支持嵌套对象;                    req.body = qs.parse(result);                }else{                       req.body = querystring.parse(result);                }                next();            })        }else{               next();        }    }}

text

function text(options){       return function(req,res,next){           const contentType = type.parse(req.headers["content-type"]);        const charset =  contentType.parameters.charset;        const cType = contentType.type;        if(cType=="text/plain"){               const buffer = [];            req.on("data",function(data){                   buffer.push(data);            });            req.on("end",function(){                   let r = Buffer.concat(buffer);                if(charset=="gbk"){                       req.body =  iconv.decode(r,charset);                }else{                       req.body = buffer.toString();                }                next()            })        }else{               next();        }    }}

转载地址:http://tld.baihongyu.com/

你可能感兴趣的文章
Nginx 负载均衡与权重配置解析
查看>>
Nginx 负载均衡详解
查看>>
nginx 配置 单页面应用的解决方案
查看>>
nginx 配置https(一)—— 自签名证书
查看>>
nginx 配置~~~本身就是一个静态资源的服务器
查看>>
Nginx 配置服务器文件上传与下载
查看>>
Nginx 配置清单(一篇够用)
查看>>
Nginx 配置解析:从基础到高级应用指南
查看>>
Nginx 集成Zipkin服务链路追踪
查看>>
nginx 集群配置方式 静态文件处理
查看>>
nginx+php的搭建
查看>>
nginx+tomcat+memcached
查看>>
Nginx+Tomcat实现动静分离
查看>>
nginx+Tomcat性能监控
查看>>
nginx+uwsgi+django
查看>>
nginx+vsftp搭建图片服务器
查看>>
Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流
查看>>
nginx-vts + prometheus 监控nginx
查看>>
nginx: [emerg] getpwnam(“www”) failed 错误处理方法
查看>>
nginx:Error ./configure: error: the HTTP rewrite module requires the PCRE library
查看>>