最近接触 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")
}