如何解决生成 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 举报,一经查实,本站将立刻删除。