go gin web 初探
本文于 1634 天之前发表,文中内容可能已经过时。
1 :gin 开发web
使用goland新建一个go mod工程, 简单的 hello word 程序
1 | import ( |
2: 一般的web开发,总会使用到数据库,最常用的数据库就是mysql,所以我们需要引入mysql。
我们需要引入 mysql 的支持
1 | go get github.com/go-sql-driver/mysql |
然后代码变成了
1 | func main(){ |
3 如2那样的代码,sql直接写在代码里面会不会不是太符合面向对象的逻辑,是否能够逻辑结构更清晰一点。
在这个阶段 gorm 登场
1 | go get github.com/jinzhu/gorm |
这个阶段把数据库的链接单独拿出来,整理一个单独的go文件
1 | package db |
定义一个单独的 user model 类
1 | import ( |
main 方法变为
1 | func main(){ |
在这个场景下,我们还可以把 路径和具体实现这块单独抽离出来,定一个router的包,response的返回一般情况下我们会有同一个的格式,所以也会抽离出来,具体的实现也会抽离,所以结构会变成如下
1 | web |
db.mysql.go
1 | import _ "github.com/go-sql-driver/mysql" |
model.user.go
1 | import ( |
handler.handler.go
1 | import ( |
response.go
1 | package response |
router.go
1 | import "github.com/gin-gonic/gin" |
4 参数的校验
在java环境中,特别是Spring环境中,我们可以使用valid 注解来做参数的自动化校验,去掉了很多和主要业务无关的代码,在go里面,是用什么样的方式去处理的?
5 一般的web开发还涉及 登陆,注册,权限状态的变化。
6 接口文档swagger的引入。
7 配置文件的引入
如上面看到的,mysql,端口号的配置,我们是硬编码在程序里面,在go 里面我们有没有什么好的方式去更灵活的配置呢?可以使用viper,viper 类似与淘宝的diamond,现在的nacos,可以灵活的去配置我们的配置。
1 | go get github.com/spf13/viper |
添加 config.yaml文件
1 | settings: |
添加 config.go
1 | package config |
数据库的配置修改为:
mysql.go 修改如下:
1 | package db |