首页 > 其他分享 >go-zero插件goctl-swagger的坑——第二弹

go-zero插件goctl-swagger的坑——第二弹

时间:2023-07-22 23:00:46浏览次数:47  
标签:插件 goctl zero api common go swagger

截至本文发布,直接安装goctl-swagger还无法解决go-zero .api文件引入问题

该文主要是记录在使用过程中遇到的问题和解决思路,不做详细教学使用。

问题

go-zero插件goctl-swagger的坑的基础上,本文带来新的问题。也就是在开头说到的go- zero.api文件相互引用问题。

在最新的go-zero中,对于.api文件支持了公共文件的引用,这对于我们编写api相当的友好,通用的返回结构可以实现在各个模块的重用。

作为演示,以goctl-swaggerexample下的user.api文件进行简单修改

import (
	"./common/common.api"
)

type (
	UserInfoReply {
		Name        string     `json:"name"`
		Age         int        `json:"age"`
		Birthday    string     `json:"birthday"`
		Description string     `json:"description"`
		Tag         []string   `json:"tag"`
		Tags        [][]string `json:"tags"`
	}
)

@server(
	prefix: /api
)

service user-api {
	@handler getUserInfo
	get /user/:id (GetReq) returns (UserInfoReply)
	
}

在同目录下建立common/common.api文件,添加如下内容

type (
    GetReq {
        Id int64 `path:"id"`
    }
)

然后用如下命令生成user.json的接口文档

goctl api plugin -plugin goctl-swagger="swagger -filename user.json" -api user.api -dir .

此时,goctl-swagger会直接报错,导致无法生成api文档

\goctl-swagger\example\user.api line 2:1  mismatched 'import value', found input '"./common/common.api"'
goctl-swagger: \goctl-swagger\example\user.api line 2:1  mismatched 'import value', found input '"./common/common.api"'

image-20230722224748539

这是因为之前的goctl-swagger中的go-zero版本还是较低的版本,不支持引入其他.api文件

解决

找到问题之后解决问题也就比较简单了,我们只需要clone源码,在本地修改go.mod中关于go-zero的版本到最新版之后,然后编译将其替换掉我们安装时的可执行文件即可

image-20230722225223454

然后重新执行生成文档的命令,生成的文档就好了,可以看到此时执行该命令也没有报错

image-20230722223618945

同时在目录下也多出了对应的api文件

image-20230722224809168

标签:插件,goctl,zero,api,common,go,swagger
From: https://www.cnblogs.com/eatfishcat/p/17574476.html

相关文章

  • vscode插件-快捷键
    插件AutoRenameTagLiveServer快捷键shift+alt+键头向下, 快速复制一行ctrl+d, 选定多个相同的关键词ctrl+alt+键头向上/下, 添加多个光标shift+alt+拖动鼠标, 选择某个区域 ......
  • idea好用插件分享
    今天看见一个有趣的文章,我立马试了试文章说的插件,看起来不错。第一个:RestfulTool可以当postman使用还可以快速找到接口。第二个:Translation  翻译插件......
  • ParaView插件—————Fluent网格(.msh .cas cas.gz .cas.h5)的读取
    说明:此插件可以直接使用官方的ParaView加载官方ParaView下载地址:https://www.paraview.org/download/使用方法见博文:https://www.cnblogs.com/liusuanyatong/p/16172223.html插件下载链接:https://pan.baidu.com/s/1ScnYvUZnGMIEiizFq4SsaA提取码:178n  功能:支持中......
  • INFINI Labs 产品更新 | Easysearch 新增分词插件、Gateway 支持邮件发送等功能
    INFINILabs产品又更新啦~,本次更新概要如下:Easysearch新增了分词插件、优化了生命周期管理功能等;Gateway新增smtp过滤器来支持邮件的发送,支持自动跳过因为异常关闭而损坏的磁盘队列文件等;Console新增熔断器监控指标、新增矩形树图(Treemap)、优化了探针Agent指标采集和集......
  • 验证码插件 vercode.js
    第1代图片验证码- 字母数字型 第2代滑动验证码-图片截取型第3代验证码-选图型 vercode.js结合了上面的情况下新研发的一种验证码。验证码类型验证码描述操作性安全性描述字母数字型图片验证码这是一种通过后台随机码生成图片的验证码。服务器会在......
  • 谷歌Chrome浏览器安装插件Hackerbar
    谷歌Chrome浏览器安装插件Hackerbar因为google浏览器的应用市场(https://chrome.google.com/webstore/category/extensions)在国内无法访问,所以无法在线安装插件,这里提供开发者模式离线安装插件的方法一、下载hackbarcrx脚本谷歌浏览器的插件离线文件的扩展名为:crx(Firefox火狐浏览器......
  • 【随手记录】MAT软件及IBM扩展插件IDFT下载
    MAT独立工具最新版本下载地址:https://projects.eclipse.org/projects/tools.matBIMIDFT扩展插件地址:https://www.ibm.com/support/pages/eclipse-memory-analyzer-tool-dtfj-and-ibm-extensions最新版需要jdk17以上,OpenJDK下载地址:https://jdk.java.net/archive/......
  • k8s 学习笔记之集群网络插件安装
    我们在安装完集群后,通过kubectlgetnodes命令获取节点,可以看到所有节点都处于NotReady的状态,这是没有安装网络插件导致的。安装网络插件kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可,本次选择flannel下面操作只需在master节点执行即可,插件......
  • 个人随笔 —— 基于 go 语言实现的轻量化 workflow 分布式引擎插件
    背景组内有很多项目都涉及复杂的任务流场景:集群创建、删除等生命周期管理k8s资源申请销毁....这些场景都有几个共同的特点:流程耗时且步骤复杂,需要几十步操作,其中包含云资源申请、脚本执行、接口调用等,且相互存在依赖关系。任务量随着业务增长而快速迭代,比如每个集群每......
  • Eclipse如何安装JavaEE插件
     Eclipse是Java编程领域最常用的开发工具之一,它提供了丰富的插件来支持各种编程语言和框架。对于JavaEE开发者来说,安装JavaEE插件是非常必要的,因为它可以为我们提供更多的工具和功能,使我们的开发工作更加高效和便捷。本文将一步步教你如何在Eclipse中安装JavaEE插件。首先,我们......