先嘚啵几句
大家好,Golang这么棒的语言学习的人越来越多,github上的轮子也是逐渐多起来,但很多刚学的朋友没有深入理解轮子的原理,看轮子使用手册直接就用,每个人轮子的规则策略基本都有自己的特性,我们不能每次都跟重新学本书一样,人脑有限是学不过来的
俗话说:『知其然知其所以然』。为了不让每个轮子都重新学一遍,最好的办法把轮子的核心思想掌握,这样拿过来一个同样属性的轮子,你就能从上层一眼看透整体轮子的架构,稍微学学就知道好处和痛点在什么地方。
不管API框架轮子有多少,但核心思想基本一致,就拿php/java/go,他们三者的web框架核心思想也大致相同,不相信可以去尝试找3个框架读一读,读完你不会失望的
我个人本身是一位phper,虽说语言只是工具,但职场上需要我们掌握更多的工具才能发挥自己的潜能,于是我就开始各种吸收go相关知识,看书、看源码、碎片时间读简书。最后为了检验自己的学习成果动手写了一套简易版的API框架,一切的学习只有动手的时候才知道自己知多少。
嘚啵玩,准备进入正题
构思
简版框架为了掌握核心思想,我们先列出来想要这个框架实现的特性
- 支持静态路由、参数路由、组路由
- 组件式可扩展的 JSON/TEXT/JSONP/XML等输出格式
- 支持依赖注入
- 支持中间件编写
- 统一日志管理
- HTTP上下文处理
- 内置一些可扩展的标准化组件
差不多这些,这套简易框架为了路由操作速度快,把gin框架的节点tree拿过来直接使用,这样可以让我们更快的搭建核心的功能(除了tree.g