go-martini 简单分析之一
2015-09-28 14:22
603 查看
env.go
环境变量
const ( Dev string = "development" Prod string = "production" Test string = "test")
定义3种常用的环境名。
var Env = Devvar Root string
Evn就是上面的环境名,Root表示host执行目录的根路径。
初始化
func init() { setENV(os.Getenv("MARTINI_ENV")) var err error Root, err = os.Getwd() if err != nil { panic(err) }}
一个包的init函数会在调用之前隐式的执行,这里使用init初始化一些环境变量。
容错性
当然,环境变量可能没有设,这里预设了值和判断容错。func setENV(e string) { if len(e) > 0 { Env = e } }
logger.go
定义logger middleware
func Logger() Handler {...}
这里的返回值Handler是一个空的接口定义
type Handler interface{}
middleware 的标准逻辑
return func(res http.ResponseWriter, req *http.Request, c Context, log *log.Logger) {
这里的context是关键
log.Printf("Started %s %s for %s", req.Method, req.URL.Path, addr) rw := res.(ResponseWriter) c.Next() log.Printf("Completed %v %s in %v\n", rw.Status(), http.StatusText(rw.Status()), time.Since(start))
这里还是标准的装饰者模式,层层嵌套。关于context,后文再作分解。
相关文章推荐
- HDU 3966 Aragorn's Story
- Google I/O 2014 & 2015 之 ART
- Goldbach's Conjecture
- go语言 获取post方式json
- 结构化视角看django
- Go语言自己实现的异步小log程序.
- hdu 5318 The Goddess Of The Moon(矩阵二分幂优化dp)
- django inclusion_tag
- mongo 启动
- Google APAC 2016 学习
- [algorithm][Reprint&summary]随机梯度下降法
- django admin 报错没有发现 table
- 在genymotion 模拟器中安装google service的方法
- django复习笔记3:实战
- #include<algorithm>里的函…
- ant colony algorithm && decision tree
- GOF23 设计模式之 代理模式
- google zxing编译
- GOF23 设计模式之 适配器模式
- Django添加Last-Modified和ETag