• Gin-swaggo为gin框架提供Swagger 文档


    官方:

    https://github.com/swaggo/gin-swagger

    开始使用

    1. 为API方法增加注释,加在controller(api)层, See Declarative Comments Format.
    2. 运行下面命令下载swgo:
    go get -u github.com/swaggo/swag/cmd/swag

    Go 1.17后的版本, 使用 go get 安装可执行文件已被废弃. 用go install代替:

    go install github.com/swaggo/swag/cmd/swag@latest
    1. 在你的go项目根目录运行swga(上文下载的exe)(比方说 ~/root/go-project-name), Swag 会分析注释生成必要的文件(docs folder and docs/doc.go) at ~/root/go-project-name/docs.
    swag init
    1. 下载gin-swagger by using:
    go get -u github.com/swaggo/gin-swagger
    go get -u github.com/swaggo/files

    Import following in your code:

    import "github.com/swaggo/gin-swagger" // gin-swagger middleware
    import "github.com/swaggo/files" // swagger embed files

    规范示例:
    现在假设您已经实现了一个简单的 api,如下所示:

    // get 函数,通过 json 返回 hello world 字符串
    func Helloworld(g *gin.Context) {
    g.JSON(http.StatusOK,"helloworld")
    }
    那么如何在上面的api上使用gin-swagger呢?只需遵循以下指南即可。

    那么如何在上面的api上使用gin-swagger呢?只需遵循以下指南即可。
    
    1.使用 gin-swagger 规则为 api 和 main 函数添加注释,如下所示:
    1. // @BasePath /api/v1
    2. // PingExample godoc
    3. // @Summary ping example
    4. // @Schemes
    5. // @Description do ping
    6. // @Tags example
    7. // @Accept json
    8. // @Produce json
    9. // @Success 200 {string} Helloworld
    10. // @Router /example/helloworld [get]
    11. func Helloworld(g *gin.Context) {
    12. g.JSON(http.StatusOK,"helloworld")
    13. }
    2.使用 swag init 命令生成一个文档,生成的文档将存储在 docs/ 中。
    

    3.像这样导入文档:我假设您的项目名为 github.com/go-project-name/docs。

    import (
       docs "github.com/go-project-name/docs"
    )

    4.构建您的应用程序,然后访问 http://localhost:8080/swagger/index.html ,您将看到您的 Swagger UI。

    5.完整的代码和文件夹亲属在这里:

    1. package main
    2. import (
    3. "github.com/gin-gonic/gin"
    4. docs "github.com/go-project-name/docs"
    5. swaggerfiles "github.com/swaggo/files"
    6. ginSwagger "github.com/swaggo/gin-swagger"
    7. "net/http"
    8. )
    9. // @BasePath /api/v1
    10. // PingExample godoc
    11. // @Summary ping example
    12. // @Schemes
    13. // @Description do ping
    14. // @Tags example
    15. // @Accept json
    16. // @Produce json
    17. // @Success 200 {string} Helloworld
    18. // @Router /example/helloworld [get]
    19. func Helloworld(g *gin.Context) {
    20. g.JSON(http.StatusOK,"helloworld")
    21. }
    22. func main() {
    23. r := gin.Default()
    24. docs.SwaggerInfo.BasePath = "/api/v1"
    25. v1 := r.Group("/api/v1")
    26. {
    27. eg := v1.Group("/example")
    28. {
    29. eg.GET("/helloworld",Helloworld)
    30. }
    31. }
    32. r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler))
    33. r.Run(":8080")
    34. }

    测试用项目树, swag init 在 .目录运行

    1. .
    2. ├── docs
    3. │   ├── docs.go
    4. │   ├── swagger.json
    5. │   └── swagger.yaml
    6. ├── go.mod
    7. ├── go.sum
    8. └── main.go
  • 相关阅读:
    笔记:关于相机的姿态角
    鸿蒙介绍、鸿蒙编程环境、基本组件、页面跳转学习
    一、openCV+TensorFlow环境搭建
    odoo wizard界面显示带复选框列表及勾选数据获取
    如何正确地使用ChatGPT(角色扮演+提示工程)
    【PointNet—论文笔记分享】
    【C进阶】之指针函数和函数指针
    【代码随想录】算法训练计划27
    7个新的ES2022 JavaScript 功能,你千万不要错过了
    计算机组成原理课程设计(1)
  • 原文地址:https://blog.csdn.net/qq_42901723/article/details/132761201