beego使用API自动化文档生成swagger时,routers目录下无法生成commentsRouter_controllers.go文件
今天项目生成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版本解决
GOPATH环境变量下github.com目录中,把 beego 给删除;(不放心可以复制一份到桌面)
cmd,执行 go get github.com/beego/beego/v2@v2.0.1
下载成功在github.com目录中会重新创建 beego 目录,里面的版本就是2.0.1了
上github下载bee@v2.0.1版本;GitHub - beego/bee at v2.0.1
下载bee压缩包,放到和 beego 同级目录中
- 打开cmd,进入bee目录路径,执行 go build 进行编译
- 报错的话,是因为没有 go.sum 文件,执行 go mod tidy 即可
- 继续执行 go build 成功,会生成一个 bee.exe 程序,复制到 GOPATH 的bin目录下
- 打开cmd,执行 bee version 就可以看到当前的bee版本了
- 如果提示没有 bee 命令,就需要把 bee.exe 再复制一份到 GOROOT 下的 bin 中
3、通过上面的步骤,版本就集齐了
此时项目中go.mod用的beego版本还是v2.0.2的,那么就要改项目版本了(不懂什么原因,我在项目路径下执行 go mod tidy 时,一直默认下载 beegov2.0.2 的给我,离谱到家了)
- 将项目的 go.mod 和 go.sum 文件都删除(不放心可以复制一份到桌面)
- 执行 go mod init productmatrix,生成 go.mod 文件
- ( 或者自己创建一个文件即可,在文件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
- 然后执行 go mod tidy 生成 go.sum 文件,查看sum文件,beego版本如下就是正确的
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=
- 在 app.conf 文件中将 runmode 配置为 dev ,(重要,否则 bee run 无法生成路由文件)
- 到这里执行 bee run -gendoc=true -downdoc=true 就可以了,看到 routers 目录下面终于生成路由文件了;
4、下面就是生成 swagger 文档的步骤了
- 在 app.conf 文件中添加 EnableDocs = true
appname = productmatrix httpport = 8080 runmode = "${RUNMODE||dev}" autorender = false EnableDocs = true
- 在 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) }
- 在 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() }
- 在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") }
- 最后,访问http://localhost:8080/swagger/就可以看到接口文档了。
欢迎大家评论和提问,一起交流学习。
beego使用API自动化文档生成swagger时,routers目录下无法生成commentsRouter_controllers.go文件相关推荐
- Api 接口文档是什么?如何直接使用 ApiDoc 生成接口文档
api接口文档 现代化开发大部分都是一种前后端分离的开发模式,前端与后端分别独立进行开发.等后续再去统一的联调.前后端分离的开发模式下,前后端沟通的成本增加,如何减少口头的交流成了关键.这时有一份高端 ...
- php怎么根据接口文档实现功能,CodeIgniter+swagger实现 PHP API接口文档自动生成功能...
一.安装swagger 1.首先需要有composer,没有的自行百度安装 2.下载swagger,打开网站https://packagist.org/packages/zircote/swagger ...
- apidoc 自动化生成 api接口文档
手写api接口太麻烦. 学习了apidoc自动生成接口文档,这边做一下整理 要用组件那就必须先安装 apidoc,做一下全局安装 npm install apidoc -g 新建配置文件apidoc. ...
- beego API开发以及自动化文档
2019独角兽企业重金招聘Python工程师标准>>> beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一 ...
- Swagger 生成 PHP restful API 接口文档
需求和背景 需求: 为客户端同事写接口文档的各位后端同学,已经在各种场合回忆了使用自动化文档工具前手写文档的血泪史. 我的故事却又不同,因为首先来说,我在公司是 Android 组负责人,属于上述血泪 ...
- 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档
Swagger是一个描述RESTful的Web API的规范和框架.如果使用ASP.NET的话,可以用Swashbuckle来自动生成Swagger,具体参考如何使 WebAPI 自动生成漂亮又实用在 ...
- Swagger 生成 PHP API 接口文档
Swagger 生成 PHP API 接口文档 标签(空格分隔): php 1.概况 有同学反馈写几十个接口文档需要两天的工作量, 随着多部门之间的协作越来越频繁, 维护成本越来越高, 文档的可维护性 ...
- Laravel使用swagger PHP生成api接口文档
Laravel使用swagger PHP生成api接口文档 Swagger集接口文档和测试于一体,就类比将postman和showdoc的结合体 首先要先安装基于laravel5的swagger包 地 ...
- swagger php 生成api,blog/Swagger生成php restful API接口文档.md at master · lfq618/blog · GitHub...
Swagger生成php restful API接口文档 背景 我们的restful api项目采用yaf框架, 整体结构简单, 我们只需要用swagger扫描 application目录即可. 下面 ...
最新文章
- Python学习 day01打卡
- python 数据库查询结果邮件提醒_Python实现的查询mysql数据库并通过邮件发送信息功能...
- AI版「按图索骥」,比猜画小歌更复杂的的AI交互游戏
- java 循环关键字_Java循环结构_常量_关键字
- javaweb火车车次信息管理+文件_厦门火车站启动“双十一”电商黄金周运输 投入列车数量为历年新高...
- 字符流写数据的5种方式
- 漫游Kafka实战篇之客户端编程实例
- c语言sizeof和strlen哪个大,C语言的sizeof和strlen区别与联系
- Python Dataframe转List
- 【Python学习】 - 使用Anaconda的Spyder查看某些函数的原型的6种方法汇总
- 如何处理服务器磁盘沾满
- TensorFlow 卷积神经网络实用指南 | iBooker·ApacheCN
- python字典(一)
- Kotlin — 适用于 Web 开发
- InnoDB在MySQL默认隔离级别下解决幻读
- 纽微特纪事:吾是如何被架空的(各位引以为戒)
- 夏普Sharp MX-B6581D 一体机驱动
- 解决因cocosStudio发布的csb文件过大导致的加载游戏界面卡的问题
- JS实现当前日期是第几周
- matlab获取2的整数次幂,如何快速判断正整数是2的N次幂