今天项目生成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. Data Geekery发布了Java ORM工具jOOQ的3.9.0版,用于构建类型安全查询
  2. shell实例第8讲:seq命令
  3. tkmybatis 子查询_dnssearch 子域名枚举工具
  4. easy excel date 类型解析报错_ptarchiver原理解析
  5. DOS的一些常用命令
  6. React学习笔记(持续更新)
  7. 25_android下文件访问的权限
  8. Explaining Classifiers using Adversarial Perturbations on the Perceptual Ball论文解读
  9. JS的IE和FF兼容性问题汇总
  10. python去除停用词_如何从gensim中的文档中删除停用词?
  11. 6*6数独,要求输出结果
  12. 技术人如何才能做好绩效管理提升团队绩效?
  13. 天天向上的力量python代码解释_小白学Python-12(天天向上的力量)
  14. 程序员撩妹专用~~~好看的H5立方体创意相册,资源免费!!!程序员送给女孩子的礼物,非常适合送给小姐姐!
  15. 强化学习 蒲丰投针实验 蒙特卡洛算法
  16. BibTeX的使用方法
  17. Spring Security系列(11)- Security5.0版本Oauth2开放平台环境搭建
  18. 魁拔妖侠传 之 浮云骑士语录
  19. Oracle数据库的常见漏洞及注入语句
  20. Python细枝末节个人知识记录

热门文章

  1. 2017亿欧创新者年会暨第三届创新奖颁奖盛典 | 互联网行业公会
  2. 合格CTO附加值:CTO教你怎样把一个价值0.5元苹果卖到100万元
  3. win10 旗舰版 系统激活出现 在连接到本地注册表时出现错误0x80041002 提示信息 解决方法...
  4. Appium+Python appium启动夜神模拟器定位元素(三)
  5. 计算机上无线网络开关在哪里,台式电脑wifi开关在哪
  6. fuchsia学习_下载编译遇到问题和demo运行
  7. Firebox比较常用的插件
  8. Vue使用微信录音并上传服务端
  9. 2022年湖南省中医执业医师考试第二单元中医诊断学(一)
  10. matlab hdf5,无法使用最新的HDF5打开matlab文件