这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
swagger的作用是充当一个api的调用文档,方便前端人员进行查询。将项目中所有的接口展现在页面上,这样后端程序员就不需要专门为前端使用者编写专门的接口文档;
一.整合swagger
1.下载所需要的包
go get -u github.com/swaggo/swag/cmd/swag
2.swag init查看项目是否多一个docs目录
3.再拉取
go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files
4.改造router包中的app.go
package router
import (
"gochat/docs"
"gochat/service"
"github.com/gin-gonic/gin"
swaggerfiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
)
func Router() *gin.Engine {
r := gin.Default()
docs.SwaggerInfo.BasePath = ""
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler))
r.GET("/index", service.GetIndex)
r.GET("/user/getUserList", service.GetUserList)
return r
}
5.测试index页面
http://localhost:8081/swagger/index.html
6.到service中index.go和userservice.go中加上相对应的代码
// GetIndex
// @Tags 首页
// @Success 200 {string} json{"code","welcome"}
// @Router /index [get]
func GetIndex(c *gin.Context) {
c.JSON(200,gin.H{
"message":"welcome !!",
})
}
// GetUserList
// @Tags 首页
// @Success 200 {string} json{"code","message"}
// @Router /user/getUserList [get]
func GetUserList(c *gin.Context) {
data := make([]*models.UserBasic, 10)
data = models.GetUserList()
c.JSON(200, gin.H{
"message": data,
})
}
7.swag init,然后就能看到前端页面中所对应的方法(注意:每次进行一个新用户的)
二.日志查询
在数据库初始化的时候加入自己的logger(注意此处的固定写法,config所展现的配置可以进行增删。)
func InitMySQL() {
// 自定义日志模板,打印语句
newLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags),
logger.Config{
SlowThreshold: time.Second, //慢sql阈值
LogLevel: logger.Info, //级别
Colorful: true, //彩色
},
)
DB, _ = gorm.Open(mysql.Open(viper.GetString("mysql.dns")), &gorm.Config{Logger: newLogger}) // 连接数据库
fmt.Println("MySQL Inited....")
}
注意:logger.New的使用需要有两步:一步是需要log.New,另一步是需要logger.Config,然后注意在下方连接数据库中的gorm.Config{Logger:newLogger},此处是用于打印数据库中的各条数据。