最近接触 Golang,发现 Web 框架中 Gin 和 Flask 一样简洁啊。后来看了下源码就几千行。7 天撸了一个,代码刚好 500 行,七天写完,恰好有了 7 个 Star,每天的代码都放在单独的目录了。。
Github 求一波 Star: geektutu/7days-golang
教程更新到第二天了,写字比写代码累啊 动手撸 Web 框架 Gee
- 第一天:前置知识( http.Handler 接口),+50 行
- 第二天:上下文设计(Context),+90 行
- 第三天:Tire 树实现路由(Router),+160 行
- 第四天:实现分组控制(Group),+50 行
- 第五天:支持中间件(Middleware),+50 行
- 第六天:支持 HTML 模板(Template),+50 行
- 第七天:实现错误恢复(Panic Recover),+50 行
适合对 Golang Web 感兴趣的同学参考。使用效果和 Gin 一模一样
func main() { r := gee.Default() r.Use(gee.Logger()) // global midlleware r.GET("/", func(c *gee.Context) { c.HTML( http.StatusOK, "custom_func.tmpl", gee.H{ "title": "gee", "now": time.Date(2019, 8, 17, 0, 0, 0, 0, time.UTC), }) }) v2 := r.Group("/v2") v2.Use(onlyForV2()) // v2 group middleware { v2.GET("/hello/:name", func(c *gee.Context) { // expect /hello/geektutu c.String( http.StatusOK, "hello %s, you're at %s\n", c.Param("name"), c.Path) }) } r.Run(":9999") } 