模仿gin的web框架
封装Request和Response,提供对JSON、HTML等返回类型的支持。
使用Trie树实现动态路由的解析,能够解析的动态路由仅限/url/:name
或/url/*path
大部分情况下的路由分组,是以相同的前缀来区分的。因此,实现的分组控制也是以前缀来区分,并且支持分组的嵌套。例如/post是一个分组,/post/a和/post/b可以是该分组下的子分组。作用在/post分组上的中间件(middleware),也都会作用在子分组,子分组还可以应用自己特有的中间件。
中间件(middlewares),简单说,就是非业务的技术类组件。Web 框架本身不可能去理解所有的业务,因而不可能实现所有的功能。因此,框架需要有一个插口,允许用户自己定义功能,嵌入到框架中,仿佛这个功能是框架原生支持的一样。
中间件可以在handler的前后进行处理,可以对context进行二次加工,然后再让handler处理,或者等待handler处理完后,再做一些额外的操作。
日志、授权等等功能都能作为中间件嵌入到web应用中。
- 实现静态资源服务
- 支持HTML模板渲染
实现非常简单,使用 defer
挂载上错误恢复的函数,在这个函数中调用 recover()*
,捕获 panic
,并且将堆栈信息打印在日志中,向用户返回 *Internal Server Error
。
有一个 trace()
函数,这个函数是用来获取触发 panic
的堆栈信息
Shout out to my best friend GRL