问题标签 [springdoc-openapi-ui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
119 浏览

java - How to set all non nullable properties of swagger responses as required?

I have a Spring Boot web app that exposes an openApi interface using swagger UI. Currently when I'm looking at responses schemas in the generated api docs json I see that fields that are not nullable are not marked as "required" by the framework. I'm looking for a way to globally set at least all primitive values as required, if possible also other types (like UUID for example). I'm trying to avoid the need for annotating each individual property as @NotNull or something of this sort since there are too many classes and properties and its just not going to happen.

Thanks.

0 投票
1 回答
1262 浏览

java - 带有路径参数和命令对象的 Springdoc-OpenAPI

我在 Springdoc 生成的 OpenAPI 规范中遇到验证错误,并且无法在线找到与我的 Java 代码形成方式相匹配的示例。

我正在尝试使用 Springdoc 为 Spring Boot 控制器生成 OpenAPI 规范。我有一个具有多个路径变量的路径的映射,并且方法签名接受一个命令对象(命令对象是从这些路径变量自动构造的)。Swagger-UI.html 似乎或多或少地工作,但生成的 JSON/YAML 规范似乎无效。

我指的代码片段:

生成的 OpenApi 片段是:

这会产生如下错误:

为了使生成的规范格式正确,我应该做些什么不同的事情?我也很好奇为什么 swagger-ui.html 页面似乎工作正常,但这并不重要。

0 投票
1 回答
248 浏览

spring-boot - 如何隐藏端点的@ApiResponse 表单@ControllerAdvice?

我正在尝试将我们手动编写的 OpenAPI (swagger) 迁移到使用 springdoc-openapi 为我们的 Spring-Boot 应用程序生成的 OpenAPI。我们遇到了一些问题,因为控制器响应(主要是错误代码)与文档不匹配。

我们已经使用了 @ControllerAdvice 注释的处理程序配置。这里有一个片段:

生成的 API 现在将所有定义的 ApiResponse 显示为所有控制器和端点的响应。因此,我使用 @ControllerAdvice(basePackageClasses = MyController.class) 拆分处理程序配置以对可能的异常进行分组。但仍有一些响应不适合控制器的所有端点。喜欢:

POST 永远不会用我的“业务”404 响应,GET 永远不会用我的“业务”400 响应。是否可以注释端点,以便在 API 中隐藏不可能的响应代码?

我试图覆盖响应,但没有按预期工作:

400仍然出现...

0 投票
0 回答
479 浏览

spring - 在 Spring 项目(不是 Spring Boot)上配置 Open API 3

遵循@Zagrebin-Victor 的建议后,我有一个运行 OpenAPI 3 (springdoc-openapi-1.5.3) 的 Spring MVC 项目

在这个常见问题解答之后,我在属性文件中定义了这个:

因此默认情况下不会加载“Petstore API”。

现在,我想配置Swagger-ui 配置web 上记录的一些属性(例如,“urls”属性)。这就是问题所在,我不知道如何配置项目

如果属性放在以下位置则不起作用:

  1. src/main/resources/application.properies”(虽然我的应用程序不是 Spring Boot 应用程序)
  2. " src/main/resources/swagger-config.yaml"
  3. 既不通过代码将其作为环境变量(丑陋的解决方案)

我发现并尝试了另一种属性符号,如GitHub 线程中所述。但没有运气

任何想法?

非常感谢

PS:我不想配置 swagger-ui 将参数放在 URL 上

0 投票
0 回答
138 浏览

java - Spring Boot - OpenAPI - 告诉 API 例如使用某些子类

我有一个类层次结构如下

现在,当 swagger 生成时,我看到汽车模型,

这里的传输类型是手动的,但给出了自动的例子。要求以手动变速器为例。我如何链接这两个属性。

我知道我可以创建一个示例 json 并将其放入,@Schema(example = "{\"numGears\": 5}")但这会在修改类时产生修改 json 的维护开销。

0 投票
1 回答
1168 浏览

spring-mvc - 从 springfox swagger 迁移到 openAPI 后,Swagger url 不起作用

我有 springfox swagger2,其中 http://localhost:8080/context/swagger-ui.html 工作正常。现在我已经修改了所有的更改,使它可以 open-api 运行。
使用:从 springfox swagger2 迁移到 springdoc openapi

现在我可以使用如下组名打开我的服务定义 json:

http://localhost:8080/context-path/v3/api-docs/groupName

但无法像之前使用 springfox 2.0 那样打开 swagger-ui.html

你能帮我吗,如何打开和应该是什么网址?
当我输入 http://localhost:8080/context/swagger-ui.html 时,它正在创建如下所示的新路由并且没有打开任何内容,404 错误。

http://localhost:8080/context/swagger-ui/index.html?configUrl=/context/v3/api-docs/swagger-config

请注意,我已经在我的项目中添加了 swagger-ui.html,因为它已经为 swagger 2.0 添加了

请帮助获得大摇大摆的主屏幕,以便我可以测试休息服务

0 投票
1 回答
830 浏览

java - springdoc-openapi-ui OpenAPI Java 生成器继承

springdoc-openapi-ui版本 1.4.0 开始,我无法再管理 java pojo 继承。我知道 AllOf, OneOf 的概念已在 1.4.0 中添加,但我不知道如何使其工作。

我有一个简单的 pojo,其中包含 X 列表(x 是抽象的)。有两种可能的实现。正确的实现取决于类 X 的属性。

**代码:(类名已重命名)**

两个版本中的 CheeseDTO YAML:

使用springdoc-openapi-ui 1.3.9,我的 yaml 生成如下:

通过打开的 openapi-generator-maven-plugin 4.3.0生成 DTO

private List<CheeseDTO> cheeses = null;

使用springdoc-openapi-ui 1.5.4,我的 yaml 生成如下:

通过打开的 openapi-generator-maven-plugin 4.3.0 生成 DTO(这是我的问题 MyDTOCheesesOneOf 而不是 CheeseDTO

private List<MyDTOCheesesOneOf> cheeses = null;

Swagger 3 注释:

OpenAPi 生成器 Maven 插件

有没有办法 List<CheeseDTO> springdoc-openapi-ui > 1.4.0 生成一个?我是否必须更改我的招摇注释或更改我的 java 生成器?

**我尝试将生成器插件更新到最新版本,但结果相同

感谢您的帮助大卫

0 投票
0 回答
237 浏览

hapi-fhir - 带有 Springdoc-openapi-ui 的 FHIR 模型

我是 Java 中 FHIR 的新手。

我注意到这个库非常重......它为所有 REST 端点定义了自己的注释 - 例如:它有 @Search 而不是 @GetMapping,以及 @Create 而不是 @PostMapping。它有自己的 JSON 解析器,显然不支持杰克逊——基本上是在重新发明轮子。

我已经习惯了新服务的简单设置——使用 springdoc-openapi-ui 和 RestControllers。

这有一个巨大的优势,因为它会自动建立一个招摇页面来与 API 交互。

ETC:

http://localhost:8080/swagger-ui.html

OpenAPI 3.0 json 将在运行时以 /v3/api-docs 相对 URI 路径提供。

不幸的是,据我所知,没有办法让 springdoc-openapi-ui 与 FHIR 一起工作......我已经搜索了他们的所有文档,但还没有找到任何东西。我发现最接近的是 r5 服务器库有一个 OpenApiGenerator:

https://hapifhir.io/hapi-fhir/apidocs/hapi-fhir-structures-r5/org/hl7/fhir/r5/openapi/package-summary.html

广泛搜索 Google 和 FHIR 文档并没有找到任何我能找到的关于如何使用 openapi 生成器的示例。我还需要了解如何让这些 @Search 或 @Create API 显示在 swagger-ui.html 页面中(如果可能的话)。由于此 UI 是从 spring-doc 库生成的 openapi 3.0 json 自动生成的,因此您可以从 /v3/api-docs/ 端点检索,该端点也是在运行时创建的。

感谢您提供有关使用 FHIR 端点的 openapi 的任何信息,以及是否可以使其与现有的行业标准 springdoc 库一起使用。

0 投票
1 回答
1701 浏览

spring-boot - OpenAPI 和 spring-doc 没有在控制器类中找到所有映射

这有点奇怪。springdoc-openapi-ui v1.2.32,生成的文档仅包含控制器内的少数映射。

例子:

文档只为postBargetBar服务生成,其他路径被忽略。

我试过的:

  1. 最初这两种 POST 方法都被命名为post. 我重命名以避免冲突。
  2. 我没有设置控制器级别的路径。
  3. 检查注释导入
  4. 未命中文档的缓存版本

如果我向控制器添加另一个服务(带有或不带有注释标记),它也不会显示在生成的 Swagger 中。例如:

如果我将此方法添加到全新的控制器,则会生成 doc。

谢谢

编辑 配置类

0 投票
2 回答
804 浏览

spring-boot - Swagger ui 使用 ip 和端口而不是域名

我正在使用 swagger 运行一个 sprinboot 应用程序。我只是按照教程进行操作,原则上只需在我的 pom.xml 中包含 springdoc 即可在本地工作。

我还更改了 application.properties 文件中的默认 swagger ui 路径

没有做进一步的配置。

我将我的应用程序部署在服务器上(在端口 7879 上运行),在该服务器上,swagger ui 可通过其域 -harri.de/harri-api.html 使用。但是当我想使用我的 REST-API 本身时,swagger 不使用域名harri.de,而是使用服务器 ip 和端口。

也许有人可以给我一个提示,在哪里以及如何配置 swagger ui 的行为。我只想大摇大摆地使用域名而不是 ip:port

非常感谢 Harri E.