刚开始学go,想了解一下..
用net/http
不用框架的理由
- 框架把 HandleFunc分开get/post/... 如果一个操作要在get/post都能用(象原生php),反而要多写代码 在要区别的地方 用 req.Method判断分支 也一样
- 框架的路由命名参数 会引发冲突 业务上了一定规模以后会带来调试的困难 比如 gin的
```
r.GET("/posts/:id"
r.GET("/posts/new"
```
- 框l架封装后,改变了api语义 比如gin 里面
c.String 会输出 html (依赖显式的header) c.HTML (缺省的header下)输出 模板 很容易造成混乱 不如net/http Header就设置header ,body就Write[]bytes 清晰
- 框架对url 尾斜杠的处理各不相同, 会影响到Seo,不如 net/http统一处理的一致性好
- 如果用了框架 有些特殊业务依赖到框架层面有新的需求 但作者认为没有共性不必要 或者有不同理解 这时侯会卡项目进度
- golang的 CSP模型使得用net/http与用框架 ,不同框架之间的性能差距并不显著,除了fasthttp这种不同请求会用同一gorutine处理 但有可能A用户请求的数据发给b用户 引入了额外的复杂性
- 库的的稳定性和维护性与框架不同,框架作者不玩了或没时间写代码就停更了,有可能公司的项目就被带到沟里去了,net/http只要google还剩一口气就可以一直用下去
#4