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目录即可. 下面 ...
最新文章
- Data Geekery发布了Java ORM工具jOOQ的3.9.0版,用于构建类型安全查询
- shell实例第8讲:seq命令
- tkmybatis 子查询_dnssearch 子域名枚举工具
- easy excel date 类型解析报错_ptarchiver原理解析
- DOS的一些常用命令
- React学习笔记(持续更新)
- 25_android下文件访问的权限
- Explaining Classifiers using Adversarial Perturbations on the Perceptual Ball论文解读
- JS的IE和FF兼容性问题汇总
- python去除停用词_如何从gensim中的文档中删除停用词?
- 6*6数独,要求输出结果
- 技术人如何才能做好绩效管理提升团队绩效?
- 天天向上的力量python代码解释_小白学Python-12(天天向上的力量)
- 程序员撩妹专用~~~好看的H5立方体创意相册,资源免费!!!程序员送给女孩子的礼物,非常适合送给小姐姐!
- 强化学习 蒲丰投针实验 蒙特卡洛算法
- BibTeX的使用方法
- Spring Security系列(11)- Security5.0版本Oauth2开放平台环境搭建
- 魁拔妖侠传 之 浮云骑士语录
- Oracle数据库的常见漏洞及注入语句
- Python细枝末节个人知识记录
热门文章
- 2017亿欧创新者年会暨第三届创新奖颁奖盛典 | 互联网行业公会
- 合格CTO附加值:CTO教你怎样把一个价值0.5元苹果卖到100万元
- win10 旗舰版 系统激活出现 在连接到本地注册表时出现错误0x80041002 提示信息 解决方法...
- Appium+Python appium启动夜神模拟器定位元素(三)
- 计算机上无线网络开关在哪里,台式电脑wifi开关在哪
- fuchsia学习_下载编译遇到问题和demo运行
- Firebox比较常用的插件
- Vue使用微信录音并上传服务端
- 2022年湖南省中医执业医师考试第二单元中医诊断学(一)
- matlab hdf5,无法使用最新的HDF5打开matlab文件