今天项目生成swagger时,按照官方文档操作,swagger目录和压缩包都正常创建,就连http://localhost:8080/swagger/也正常访问,但是 Try it out 接口时,就 404 报错,百度说是因为commentsRouter_controllers.go(下面简称:路由文件)没有的原因。一看发现项目确实没有生成这个文件。。。。。于是耗费半天的时间才搞定,有点坑。。。。。。

1、先说项目环境:

无法生成路由文件的项目环境:

go1.16 、beegov2@v2.0.2 、bee@v2.0.2

成功生成路由文件的项目环境:

go1.16 、beegov2@v2.0.1 、bee@v2.0.1

看到这里应该就知道了,就是beego的版本造成的!!!

(具体原因还没有时间去验证,感觉是因为 go版本 和 beego版本之间的原因,如果你现在是 go1.18版本,那就可以试一试beego2.0.2、bee2.0.2和beego2.0.4、bee2.0.4)

2、beego版本解决

  1. GOPATH环境变量下github.com目录中,把 beego 给删除;(不放心可以复制一份到桌面)

  2. cmd,执行 go get github.com/beego/beego/v2@v2.0.1

  3. 下载成功在github.com目录中会重新创建 beego 目录,里面的版本就是2.0.1了

  4. 上github下载bee@v2.0.1版本;GitHub - beego/bee at v2.0.1

  5. 下载bee压缩包,放到和 beego 同级目录中

  6. 打开cmd,进入bee目录路径,执行 go build 进行编译
  7. 报错的话,是因为没有 go.sum 文件,执行 go mod tidy 即可
  8. 继续执行 go build 成功,会生成一个 bee.exe 程序,复制到 GOPATH 的bin目录下
  9. 打开cmd,执行 bee version 就可以看到当前的bee版本了
  10. 如果提示没有 bee 命令,就需要把 bee.exe 再复制一份到 GOROOT 下的 bin 中

3、通过上面的步骤,版本就集齐了

此时项目中go.mod用的beego版本还是v2.0.2的,那么就要改项目版本了(不懂什么原因,我在项目路径下执行 go mod tidy 时,一直默认下载 beegov2.0.2 的给我,离谱到家了)

  1. 将项目的 go.mod 和 go.sum 文件都删除(不放心可以复制一份到桌面)
  2. 执行 go mod init productmatrix,生成 go.mod 文件
  3. ( 或者自己创建一个文件即可,在文件go.mod中添加 replace ,如下: 
    module productmatrixgo 1.16// replace 指定使用依赖版本,否则执行 go mod tidy 会默认安装 v2.0.2 的给我replace github.com/beego/beego/v2 => github.com/beego/beego/v2 v2.0.1
  4. 然后执行 go mod tidy 生成 go.sum 文件,查看sum文件,beego版本如下就是正确的
  5. github.com/beego/beego/v2 v2.0.1 h1:07a7Z0Ok5vbqyqh+q53sDPl9LdhKh0ZDy3gbyGrhFnE=
    github.com/beego/beego/v2 v2.0.1/go.mod h1:8zyHi1FnWO1mZLwTn62aKRIZF/aIKvkCBB2JYs+eqQI=
  6. 在 app.conf 文件中将 runmode 配置为 dev ,(重要,否则 bee run 无法生成路由文件)
  7. 到这里执行 bee run -gendoc=true -downdoc=true 就可以了,看到 routers 目录下面终于生成路由文件了;

4、下面就是生成 swagger 文档的步骤了

  1. 在 app.conf 文件中添加 EnableDocs = true

    appname = productmatrix
    httpport = 8080
    runmode = "${RUNMODE||dev}"
    autorender = false
    EnableDocs = true
  2. 在 router.go 中创建路由规则
    // @APIVersion 1.0.0
    // @Title matrix API
    // @Description server api document
    // @Contact XXXX
    package routersimport ("productmatrix/controllers"beego "github.com/beego/beego/v2/server/web"
    )func init() {ns1 := beego.NewNamespace("/v1",beego.NSNamespace("/thirdparty",beego.NSInclude(&controllers.ThirdpartyController{},),),)beego.AddNamespace(ns1)
    }
  3. 在 main.go 的 main() 方法中添加如下:( _ "productmatrix/routers" 是生成路由文件必须添加的) 
    package mainimport (_ "productmatrix/routers"beego "github.com/beego/beego/v2/server/web"
    )func main() {// 生成接口文档if beego.BConfig.RunMode == "dev" {beego.BConfig.WebConfig.DirectoryIndex = truebeego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"}beego.Run()
    }
  4. 在ThirdpartyController中定义方法和swagger注解就可以了
    package controllersimport ("encoding/json""productmatrix/errors""productmatrix/models"beego "github.com/beego/beego/v2/server/web""github.com/beego/beego/v2/core/logs"
    )type ThirdpartyController struct {beego.Controller
    }// @Title getLicenseSubmitForm
    // @Description 许可新增接口
    // @Param body body models.LicenseReq true "许可新增DTO"
    // @Success 200 {object} models.ResponseDTO
    // @Failure 500 Server Exception
    // @router /license/request [post]
    func (c *ThirdpartyController) LicenseSubmitForm() {licenseReq := models.LicenseReq{}if err := json.Unmarshal(c.Ctx.Input.RequestBody, &licenseReq); err != nil {logs.Error(err)c.ReturnError(errors.NewRuntimeError(err, "7003"))}if err := models.LicenseSubmitForms(licenseReq); err != nil {c.ReturnError(errors.NewRuntimeError(err, "7002"))}c.ReturnSuccess("license request successfully")
    }// @Title getLicenseSubmitFormList
    // @Description 许可查询接口
    // @Success 200 {object} models.ResponseDTO
    // @Failure 500 Server Exception
    // @router /license/list [get]
    func (c *ThirdpartyController) LicenseSubmitFormList() {c.ReturnSuccess("successfully")
    }
    
  5. 最后,访问http://localhost:8080/swagger/就可以看到接口文档了。

欢迎大家评论和提问,一起交流学习。

beego使用API自动化文档生成swagger时,routers目录下无法生成commentsRouter_controllers.go文件相关推荐

  1. Api 接口文档是什么?如何直接使用 ApiDoc 生成接口文档

    api接口文档 现代化开发大部分都是一种前后端分离的开发模式,前端与后端分别独立进行开发.等后续再去统一的联调.前后端分离的开发模式下,前后端沟通的成本增加,如何减少口头的交流成了关键.这时有一份高端 ...

  2. php怎么根据接口文档实现功能,CodeIgniter+swagger实现 PHP API接口文档自动生成功能...

    一.安装swagger 1.首先需要有composer,没有的自行百度安装 2.下载swagger,打开网站https://packagist.org/packages/zircote/swagger ...

  3. apidoc 自动化生成 api接口文档

    手写api接口太麻烦. 学习了apidoc自动生成接口文档,这边做一下整理 要用组件那就必须先安装 apidoc,做一下全局安装 npm install apidoc -g 新建配置文件apidoc. ...

  4. beego API开发以及自动化文档

    2019独角兽企业重金招聘Python工程师标准>>> beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一 ...

  5. Swagger 生成 PHP restful API 接口文档

    需求和背景 需求: 为客户端同事写接口文档的各位后端同学,已经在各种场合回忆了使用自动化文档工具前手写文档的血泪史. 我的故事却又不同,因为首先来说,我在公司是 Android 组负责人,属于上述血泪 ...

  6. 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档

    Swagger是一个描述RESTful的Web API的规范和框架.如果使用ASP.NET的话,可以用Swashbuckle来自动生成Swagger,具体参考如何使 WebAPI 自动生成漂亮又实用在 ...

  7. Swagger 生成 PHP API 接口文档

    Swagger 生成 PHP API 接口文档 标签(空格分隔): php 1.概况 有同学反馈写几十个接口文档需要两天的工作量, 随着多部门之间的协作越来越频繁, 维护成本越来越高, 文档的可维护性 ...

  8. Laravel使用swagger PHP生成api接口文档

    Laravel使用swagger PHP生成api接口文档 Swagger集接口文档和测试于一体,就类比将postman和showdoc的结合体 首先要先安装基于laravel5的swagger包 地 ...

  9. swagger php 生成api,blog/Swagger生成php restful API接口文档.md at master · lfq618/blog · GitHub...

    Swagger生成php restful API接口文档 背景 我们的restful api项目采用yaf框架, 整体结构简单, 我们只需要用swagger扫描 application目录即可. 下面 ...

最新文章

  1. Python学习 day01打卡
  2. python 数据库查询结果邮件提醒_Python实现的查询mysql数据库并通过邮件发送信息功能...
  3. AI版「按图索骥」,比猜画小歌更复杂的的AI交互游戏
  4. java 循环关键字_Java循环结构_常量_关键字
  5. javaweb火车车次信息管理+文件_厦门火车站启动“双十一”电商黄金周运输 投入列车数量为历年新高...
  6. 字符流写数据的5种方式
  7. 漫游Kafka实战篇之客户端编程实例
  8. c语言sizeof和strlen哪个大,C语言的sizeof和strlen区别与联系
  9. Python Dataframe转List
  10. 【Python学习】 - 使用Anaconda的Spyder查看某些函数的原型的6种方法汇总
  11. 如何处理服务器磁盘沾满
  12. TensorFlow 卷积神经网络实用指南 | iBooker·ApacheCN
  13. python字典(一)
  14. Kotlin — 适用于 Web 开发
  15. InnoDB在MySQL默认隔离级别下解决幻读
  16. 纽微特纪事:吾是如何被架空的(各位引以为戒)
  17. 夏普Sharp MX-B6581D 一体机驱动
  18. 解决因cocosStudio发布的csb文件过大导致的加载游戏界面卡的问题
  19. JS实现当前日期是第几周
  20. matlab获取2的整数次幂,如何快速判断正整数是2的N次幂

热门文章

  1. JAVA多线程基础篇-关键字synchronized
  2. html下拉框的宽度怎么设置,在HTML选择下拉选项中设置下拉元素的宽度
  3. 关于ppt无法添加页码的解决办法
  4. Unity中制作动画
  5. 万用表怎么测量电池容量_万用表测量锂电池容量的方法
  6. cannot find -lxxx问题
  7. 递归函数求解阶层(C语言)
  8. T20,寻寻觅觅冷冷清清凄凄惨惨切切。。。
  9. 异步FIFO的原理以及可综合的Verilog代码
  10. pads 打开AD 软件的pcb——两种方式