oapi-codegen 安装和使用

背景描述

oapi-codegen 是代码自动生成工具,其大致逻辑是:(1)编写遵循 openAPI 规范的 yaml 格式 api 接口文档;(2)使用 oapi-codegen 使用 yaml 文件生成 gin 框架的 server 端代码。

除此以外还有其他的工具也具有同等功能,参见:https://ldej.nl/post/generating-go-from-openapi-3。

openAPI 是一套 api 书写规范,具体规范内容参见:https://swagger.io/specification。

这种生成的 server 端代码本身就具有请求参数校验的功能,开发者只需要写业务校验即可,而且能时刻保持 api 文档和代码的一致性。

oapi-codegen 安装

go install github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen@latest

这里有个迷惑信息,执行上述命令会出现 warning 提示:

# github.com/deepmap/oapi-codegen/cmd/oapi-codegen
ld: warning: '/private/var/folders/5n/cwh6dp7x6z7_x48x88q7z8_r0000gn/T/go-link-3224665146/go.o' has malformed LC_DYSYMTAB, expected 120 undefined symbols to start at index 15440, found 129 undefined symbols starting at index 75

执行 oapi-codegen -h 命令会出现:

zsh: command not found: oapi-codegen

以为是安装失败了[苦笑]。warning 提示不会影响功能,参见:https://github.com/golang/go/issues/61229。下载的 oapi-codegen 命令保存在 ${GOPATH}/bin 路径下,只需要将该路径配置到 PATH 中即可。

# 获取 GOPATH
go env | grep GOPATH
GOPATH="/Users/diegolli/go"# 查看 oapi-codegen
ll /Users/diegolli/go/bin
total 91360
-rwxr-xr-x  1 diegolli  staff    25M May  6  2023 gopls
-rwxr-xr-x  1 diegolli  staff   6.0M Nov 21 18:05 gotip
-rwxr-xr-x  1 diegolli  staff    14M Nov 21 22:36 oapi-codegen# 配置好 PATH 后执行 oapi-codegen
oapi-codegen
Please specify a path to a OpenAPI 3.0 spec file

出现 ”Please specify a path to a OpenAPI 3.0 spec file“ 表示安装成功。

oapi-codegen 使用

官方提供了使用 demo,但这种方式要依赖 repo 中的脚本,命令行工具不就白装了吗。

命令方式:

oapi-codegen -config server.cfg.yaml petstore-expanded.yaml
# 执行完毕后目录下会生成 petstore-server.gen.go 文件,里面包含 types、spec、gin、client 相关的代码。

server.cfg.yaml 地址:https://github.com/deepmap/oapi-codegen/blob/master/examples/petstore-expanded/gin/api/server.cfg.yaml

petstore-expanded.yaml 地址:https://github.com/deepmap/oapi-codegen/blob/master/examples/petstore-expanded/petstore-expanded.yaml

server.cfg.yaml 文件中内容还可以用直接用命令行方式书写,具体写法见 oapi-codegen -h

小结

  1. 这篇文档只是描述了 oapi-codegen 安装和使用原型,可以基于此做相关功能测试。
  2. oapi-codegen 使用的关键是写 yaml 文档,规范见开头链接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/162568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编辑 | 古代汉语知识

文章目录 文字通假字古今字异体字(了解) 词汇古汉语中的单音词与双音词(掌握)词的本义与引申义的特点和主要差异(掌握)词的古义与今义的特点和主要差异(掌握)与现代汉语用法相同与现…

反向传播BP算法

神经网络的反向传播 反向传播机制与代码微分引擎与代码原理阐述 如需转载,请注明出处! 如有帮助点赞收藏关注! 反向传播机制与代码 这里主要介绍反向传播是如何运作的,代码中会加注释,便于大家理解。 在训练神经网络时…

抖音商城小程序源码系统 附带完整的搭建教程

大家好啊,今天小编来给大家分享一款抖音商城小程序源码系统。这可是当下最热门的的项目之一。。抖音作为国内最大的短视频平台之一,拥有庞大的用户群体和丰富的社交功能。为了满足用户在抖音上购物和交易的需求,抖音商城小程序应运而生。 以…

租车系统开发/多功能租车平台微信小程序源码/汽车租赁系统源码/汽车租赁小程序系统

源码介绍: 多功能租车平台微信小程序源码,作为汽车租赁、摩托车租车平台系统源码,是小程序系统。基于微信小程序的汽车租赁系统源码。 开发环境及工具: 大等于jdk1.8,大于mysql5.5,idea(eclip…

拆解:淘宝客新玩法之微信淘礼金创建怎么做

最近看到一种新的淘宝客玩法,迫不及待的想分享给大家。微信公众号查券大家都不陌生,也有不少人都在做这个。最近看到有人在做微信公众号创建淘礼金。之所以说这个玩法新是因为目前大多数淘客还在做返利。返利有周期长、提现有门槛等痛点。 微信公众号创建…

基于Springcloud微服务框架智慧工地系统源码

建筑行业快速发展,各建筑工程的建设规模在不断扩大,各岗位工作人员的工作内容所涉及的方面也越来越广泛。随着信息技术水平不断提高,人工记录的方式已经不能够满足大项目的管理要求,就此,创造出一种新型的施工管理技术——智慧工地…

携程token

网址:https://flights.ctrip.com/ 记录一下这个要我狗命的token 原本以为解决验证码就能继续查机票信息,奈何太年轻,或者说原本以为这个头部信息的token不重要,其实还是很重要的。 关于查价格 ,如果说查询频繁之后就…

小型内衣裤洗衣机哪个牌子好?性价比小型洗衣机推荐

内衣内裤应该如何清洗才能实现在不伤衣的同时有能够洗干净呢?其实除了使用温水搭配手洗以外,还有一些清洗方式,那就是选择一台专门为内衣定制的内衣洗衣机。目前内衣洗衣机由于精致小巧,方便安装,方便使用,…

关于内存与实际数据之间一些理解

//// 16位无符号强转有符号 测试用例// 由于第一位表示正负的位是0,强制转换有符号后,仍然是0,所以无影响 0-32767 (3276715个1,最左边符号位仍然是0)之间都是无影响的unsigned short* pUS new unsigned s…

分布式幂等

分布式幂等 在分布式系统、网络通信和数据库操作中,幂等性是一个非常重要的概念,特别是在面对可能发生网络故障、消息重复、或者系统崩溃等情况时。 举个简单的例子,考虑一个银行转账的操作。如果转账操作是幂等的,那么无论你执…

PC分页操作以及loading效果

page-size 每页显示条目个数 current-page 当前页数 total 数据总数 current-change【currentPage 改变时会触发】 切换分页时会先加载,等在接口数据,接口返回,加载会关闭(在获取接口数据完毕哪里加上this.loadingfalse&#xff0…

低权限(无权限)时如何在mysql客户端控制台的大量输出中快速定位mysql死锁或慢sql

查看mysql的查看死锁的方式很多,但很多时候我们普通开发者的权限比较低,无法执行某命令。比如本次就准备使用 SHOW ENGINE INNODB STATUS;命令,但客户端提示权限不够。后来本人找到了另一条低权限的命令 show full PROCESSLIST;但是show fu…

比例减压阀放大器选型

控制阀型如比例插装阀、比例方向阀、比例压力阀、比例流量阀、比例叠加阀等,安装方式有插式及导轨卡槽式,输入指令可选0-10V、4-20mA、10V、0-5V,输出电流可选最大3A,适用各大品牌不带电反馈常规比例阀匹配度,控制比例…

1553. 吃掉 N 个橘子的最少天数(记忆化+贪心优化)

Problem: 1553. 吃掉 N 个橘子的最少天数 文章目录 题目思路Code 题目 使得 n 变成0的操作有三种方式 : 吃掉一个橘子。如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个…

易点易动设备管理系统提升设备能耗管理和设备状态监控效率

如今,能源效率和设备状态监控对于企业来说变得越发重要。传统的设备管理方式往往存在能耗浪费和难以实时监控设备状态的问题。为了解决这些问题,易点易动设备管理系统应运而生。本文将介绍易点易动设备管理系统的功能和优势,以及如何通过它提…

Oracle数据库安装踩坑记录

Oracle数据库安装踩坑记录 踩坑目录 可能会用到的教程1. 管理员用户(sys)登录oracle命令2. 默认密码:三个 如果忘记改密码参考 1. 登录后修改密码3. 查看账号密码:只有sys用户登录后才能查看4. sqldeveloper 连接oracle数据库5. o…

简墨的进化之路:打造大模型数据计算系统的云存储底座

10月24日程序员节,「大模型数据计算系统」2023拓数派年度技术论坛在上海圆满落幕,拓数派大模型数据计算系统(PieDataComputingSystem,缩写:πDataCS)如约而至!πDataCS 以云原生技术重构数据存储…

论文浅尝 | 用于文档级事件关系抽取的稀疏事件表示的判别推理

笔记整理:邹铭辉,天津大学硕士,研究方向为自然语言处理 链接:https://aclanthology.org/2023.acl-long.897 动机 文档级事件关系抽取(Document-level Event-Event Relation Extraction,简称DERE&#xff09…

vite配置proxy代理

如下代码: "/cygl/api/cyfx" 和 "/cygl/api" 两个代理配置。 如果将"/cygl/api/cyfx"放到"/cygl/api"的下边,那么"/cygl/api/cyfx"代理将会失效。 因为他们的前置路径一样。会先行匹配掉/cygl/api 在…