本栏目整体是根据geektutu的七天系列得来的灵感,并且很大部分都和兔兔的内容类似。但有些内容有自己的想法。在此非常感谢兔兔!!!
一个完整的web框架最基本最基本的功能必须要有如下三个抽象
- 代表服务器的抽象
- 代表上下文的抽象
- 路由树
对于代表服务器的抽象,至少需要提供三部分的功能
- 生命周期控制:启动、关闭、对于生命周期的回调
- 路由注册接口
- 作为http包到web框架的桥梁
对于代表上下文的抽象,我们的基本准测就是更方便用户使用。在Go内置的http包中,提供的http.ResponseWriter对象和http.Request对象的粒度太小,一些很常用的操作写起来很繁琐。
- 更快捷地获取请求方式
- 更快捷地获取请求地址
- 更快捷地响应各种响应类型
- JSON格式
- HTML格式
- Text个数
- ...
- ....
对于路由树,这个我认为是一个web框架最重要的内容。他需要的提供的功能只有两个
- 注册路由
- 匹配路由
但是在注册路由和匹配路由的时候,有很多小细节需要注意
- 静态路由注册
- 动态路由注册
- 参数路由
- 通配符路由
- 正则路由
- ...
- 动静态路由的匹配
上述三个是一个web框架最重要最基本的功能。为了用户体验,我们还需要提供一些更方便的操作
- AOP方案
- 页面渲染
- 文件处理
- session会话机制
- ....
这里列出的功能都不会侵入框架的核心,他只是作为一个框架的衍生功能。