微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

生成 Swagger API 的最佳方法?即代码生成与 swagger 编辑器Spring Boot API

如何解决生成 Swagger API 的最佳方法?即代码生成与 swagger 编辑器Spring Boot API

我正在开发一个有点旧的 API (Spring Boot) - 它使用的是 openapi 2.0 版,并且还使用了 pom.xml 中的 import cv2 import numpy as np # test points pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]]); pts2 = np.float32([[0,0],[300,[0,300],300]]); # transformation M = cv2.getPerspectiveTransform(pts1,pts2); # if our method works,then transforming each pts1 with M # should result in pts2 transformed_points = []; for p in pts1: # augment point point = np.array([p[0],p[1],1],dtype = np.float32); # multiply transformed = np.matmul(M,point); # unpack and clean up x,y,scale = transformed; x /= scale; y /= scale; x = round(x,5); # to clear out long floating points y = round(y,5); transformed_points.append([x,y]); # compare points for a in range(len(pts2)): print("Target: " + str(pts2[a])); print("Transformed: " + str(transformed_points[a])); 插件

我最近做了一个 LinkedIn 学习课程,我们使用 Swagger 编辑器(本地使用 Docker)编写 api 规范(openapi 3.0)并以您选择的任何语言“导出”服务器存根,在这种情况下是 Java Spring。我注意到控制器实现的 API 类已经在这个存根中生成。但是,当使用 swagger-codegen-maven-plugin 时,这些接口在您编译项目(mvn install)之前不会生成,您定义的任何数据结构的模式也是如此,例如,您在swagger yaml 的“定义”部分。

我想询问这里构建 API 的首选方法是什么 - 是通过 Web GUI 使用 Swagger 编辑器还是在本地使用 Swagger 编辑器并在 YAML 中编写规范,然后以您选择的语言/框架导出服务器存根OR 是在本地手动编写一些类吗(即使你添加了swagger yaml,看起来你仍然需要为Controllers等编写代码......使用这种方法,如果我错了,请纠正我)即使用 Spring 的 IntelliJ,然后将 swagger-codegen-maven-plugin 添加到您的项目中并让它生成适合您的接口/具体类?

解决方法

我更喜欢使用 Maven 插件。

在 Maven 生命周期的编译阶段生成服务器存根没有任何问题:您运行它,获得存根并开始使用它们。

Maven 插件的优点是您可以配置生成器的输出:例如,您可以设置包名称、模型名称的后缀或前缀,无论您只想生成接口还是存根实现。

此处是 maven plugin configurations 的完整列表,您可以在此处找到 Spring specific options。 使用 Swagger 网页生成器,据我所知,你不能配置任何东西。

使用maven插件时唯一要记住的是不要手动修改生成的代码,否则每次再次运行都会丢失手动更改。因此,您的实际实现代码将需要实现生成的 API 接口或扩展生成的 API 控制器。或者甚至更好地生成将 delegatePattern 选项设置为 true 的代码,并实现生成的委托接口。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。