博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何封装 node 中间件
阅读量:3946 次
发布时间:2019-05-24

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

如何封装 node 中间件

如何封装 node 中间件

  • 在 NodeJS 中,中间件主要是指封装所有 http 请求细节处理的方法
  • 一次 http 请求通常包含很多工作
    • 记录日志、ip过滤、查询字符串、请求体解析、Cookie处理、权限验证、参数验证、异常处理
    • 但对于 Web 应用而言,并不希望接触到这么多细节性的处理
    • 因此引入中间件来简化和隔离这些基础设施与业务逻辑之间的细节
    • 让开发者能够关注在业务的开发上,以达到提升开发效率的目的
  • 中间件的行为比较类似 Java 中过滤器的工作原理,就是在进入具体的业务处理之前,先让过滤器处理
const http = require('http')function compose(middlewareList) {
return function (ctx) {
function dispatch (i) {
const fn = middlewareList[i] try {
return Promise.resolve(fn(ctx, dispatch.bind(null, i + 1))) } catch (err) {
Promise.reject(err) } } return dispatch(0) }}class App {
constructor(){
this.middlewares = [] } use(fn){
this.middlewares.push(fn) return this } handleRequest(ctx, middleware) {
return middleware(ctx) } createContext (req, res) {
const ctx = {
req, res } return ctx } callback () {
const fn = compose(this.middlewares) return (req, res) => {
const ctx = this.createContext(req, res) return this.handleRequest(ctx, fn) } } listen(...args) {
const server = http.createServer(this.callback()) return server.listen(...args) }}module.exports = App

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

你可能感兴趣的文章
开始使用Retrofit 2 HTTP 客户端
查看>>
对于初学者练习的6个开源项目
查看>>
保持冷静和需要打破的东西:软件测试初学者
查看>>
如何通过连接您的业务应用程序来节省时间
查看>>
熟悉现代JavaScript的培训计划
查看>>
7本书从小工到数据分析专家
查看>>
程序设计的基本原则:栈和堆
查看>>
Android应用程序架构
查看>>
Android:绘制自定义视图
查看>>
Android开发:一些有用的库(第一部分)
查看>>
Android 默认暗码
查看>>
Android 系列 1.3了解Android版本
查看>>
Android 系列 6.28使用正确的复数格式化
查看>>
Android 系列 6.29创建在两个活动之间显示的加载屏幕
查看>>
Android的Gradle技巧 1.2配置SDK版本和其他默认值
查看>>
Android的Gradle技巧 1.3从命令行执行Gradle构建
查看>>
Android的Gradle技巧 1.4从Android Studio执行Gradle构建
查看>>
Android的Gradle技巧 1.5添加Java库依赖关系
查看>>
Android的Gradle技巧 1.6使用Android Studio添加库依赖关系
查看>>
Android的Gradle技巧 1.7配置存储库
查看>>