Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wangluyu/gin-project-template
a project template for gin
https://github.com/wangluyu/gin-project-template
gin go golang
Last synced: 7 days ago
JSON representation
a project template for gin
- Host: GitHub
- URL: https://github.com/wangluyu/gin-project-template
- Owner: wangluyu
- Created: 2019-09-17T10:10:37.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-11-25T11:26:57.000Z (about 5 years ago)
- Last Synced: 2024-11-14T14:29:26.597Z (about 1 month ago)
- Topics: gin, go, golang
- Language: Go
- Size: 28.3 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# gin-project-template
a project template for gin## Todo list
1. ~~配置文件~~ 2019.10.25
2. ~~日志记录到文件~~ 2019.10.25
3. mysql
4. redis
5. docker部署
6. ~~swagger文档~~ 2019.10.25
7. ~~jwt~~ 2019.11.25
8. ~~邮件~~ 2019.11.25
9. ~~腾讯云短信~~ 2019.11.25## 如何使用(How To Use)
#### 配置文件
- 在`config/app.yaml`指定`evn`的值,`evn`的值为配置文件名称
- 配置文件每增加一个配置项,需要在`pkg/util/conf.go`里添加/修改对应的struct
- 获取配置项
```$golang
// 获取app配置
appConf, err := util.FetchAppConf()
// 获取自定义配置
conf, err := util.FetchConf()
mysqlConf := conf.Mysql
mysqlHost := conf.Mysql.Host // mysqlConf.Host
```#### 发送邮件
- 在config/app.yaml配置mail和mailProduct
- from: 发送邮件的邮箱地址
- host: smtp服务器,根据from定义
- port: smtp服务器端口
- password: 发送邮箱的登陆密码
- mailProduct
- name: 落款名
- link: 公司主页
- logo: 公司logo
- copyright: Copyright 显示在邮件最下方
- 生成邮件以及发送邮件
```$golang
// mail.Welcome为自定义模版
// 模版参考https://github.com/matcornic/hermes
email := new(mail.Welcome)
// 生成邮件内容
body := mail.Generate(email.Email(...$params))
// 发送邮件
mail.Send($subject, body, $to)
```#### 发送短信(腾讯云短信服务)
- 在config/app.yaml配置tencent和sms
- tencent
- secretId: 用于标识 API 调用者身份
- secretKey: 用于验证 API 调用者的身份
- 申请安全凭证:
- 在 [ 腾讯云管理中心控制台-云API密钥](https://console.cloud.tencent.com/capi) 页面,单击【新建密钥】即可以创建一对密钥。
- sms
- sign: 短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名
签名信息可登录[短信控制台](https://console.cloud.tencent.com/sms/smslist)查看。
- sdkAppid: 短信SdkAppid在[短信控制台](https://console.cloud.tencent.com/sms/smslist)添加应用后生成的实际SdkAppid,示例如1400006666。
- 发送短信
```$golang
sms.Send($phone, $templateID, $params)
```#### JWT
- 在config/app.yaml配置jwt
- expire: token过期时间 单位为小时
- issuer: 字符串
- 生成token方法详见app/api/v1/auth.go
- 使用方法详见router#### 日志记录到文件
- 在`config`指定`logPath`的值,`logPath`的值为日志目录
- info日志文件名称形如20191025.log,error日志文件名称形如20191025.log.wf
- 记录日志
```$golang
// 记录info日志
log.Info["hello"] = "world"
log.Info["great"] = "wall"
// 输出日志文本为: time="2019-10-25T18:29:39+08:00" level=info hello=world great=wall
// 记录warning日志
_ = log.Warn("You should probably take a look at this")
// 输出日志文本为: time="2019-10-25T18:28:44+08:00" level=warning msg=You should probably take a look at this
// 记录error日志
_ = log.Error("Something failed but I'm not quitting.")
// 输出日志文本为: time="2019-10-25T18:28:44+08:00" level=error msg=Something failed but I'm not quitting.
```
#### swagger文档
swag init
- main.go注释解释
- `@title` 文档名称
- `@version` 文档版本
- `@description` 描述
- `@host` 访问地址
- `@BasePath` 例:/api/v1
- `@license.name` Apache 2.0
- `@license.url` http://www.apache.org/licenses/LICENSE-2.0.html
```$xslt
示例:
// @title gin-project-template
// @version 1.0
// @description gin-project-template demo
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @host 127.0.0.1:8080
// @BasePath /api/v1
```- api注释解释
- `@Summary` 简介
- `@Description` 解释
- `@Tags` api组名
- `@Produce` Response content type
- `@Param` 参数名称 path/query/body 参数类型 是否必须true/false "参数解释"
- `@Success` 200 {object} struct 用于展示success结果
- `@Failure` 400 {object} struct 用于展示error结果
- `@Router` 路由 [get/post/put/del/...]
```$xslt
示例:
// @title gin-project-template
// @version 1.0
// @description gin-project-template demo
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @host 127.0.0.1:8080
// @BasePath /api
```