问题标签 [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 投票
3 回答
2054 浏览

java - 如何从我的 openapi 招摇中删除“api-resource-controller”

我目前正在使用以下openapi-ui依赖项。

如何从openapi-ui 招摇屏幕中删除api-resource-controller ?

在此处输入图像描述

0 投票
1 回答
416 浏览

spring-boot - Spring Boot 2 OpenAPI 3 文档的自定义模式

我需要为我的 Spring Boot 2 项目集成 OpenAPI 3 文档。我们没有在控制器上使用模态/DTO。

这是示例控制器:

请求正文:

我的回复:

我无法找到为我的自定义 Map 对象添加 OpenAPI 文档的方法。我想手动为我的地图中的每个属性添加key, description, 。typeexample(s)

谁能建议如何做到这一点?

0 投票
1 回答
748 浏览

swagger - 从多个 OpenAPI 规范端点服务一页?

我们正在运行一组微服务,每个微服务都向 url 公开 open-api 规范,如下所示。

url 打开 open-api json(不是 UI)。

有谁知道我可以将这些组合起来并能够通过带有 UI 的 https://{domain}/v1/apis 之类的 url 提供所有 api 的工具?

我查看了谷歌,我看到的所有内容都要求我创建一个包含所有 api 的单个 json 文件,而不是动态地提供这些。

0 投票
1 回答
3208 浏览

openapi - 如何更改 swagger-ui 路径以打开自定义文档?

我正在尝试使用 OpenAPI 3.0(版本 1.5.0)记录我的 REST API。我的问题是如何更改招摇网址以重定向到我的自定义文档?

这是我当前的 application.yml 文件:

如果我尝试启动我的应用程序并使用以下链接访问 swagger 文档:https://localhost:8080/custom/swagger

我被重定向到 https://localhost:8080/custom/swagger-ui/index.html?configUrl=/custom/api-docs

这会打开 Petstore 文档,而不是我的自定义文档。

如果我在 URL 中手动输入: https://localhost:8080/custom/swagger-ui/index.html?url=/custom/api-docs (configUrl更改为url)它会打开我的自定义文档。

我想要实现的目标是不是在输入 https://localhost:8080/custom/swagger 时会打开我的自定义 swagger 文档,而不是 Petstore 文档?

如果这很重要,这是我的依赖:

0 投票
1 回答
760 浏览

java - 如何使用springdoc-openapi以相反的顺序对端点进行排序

我正在使用版本(1.2.32)的spring doc-open API。现在我想通过它的 HTTP 方法(倒序)在 UI 中对我的端点进行排序,并且我没有在我的端点方法上使用任何标签。

如果我有 4 个端点 post、get、put、delete,那么我想显示方法 Put、post、get、delete

我尝试了以下方法,但似乎不起作用:

springdoc.swagger-ui.operationsSorter=(方法和阿尔法)

我该如何解决这个问题?

0 投票
2 回答
2399 浏览

swagger - nginx 代理背后的 SpringDoc/Swagger

我们在代理后面运行服务,nginx以便:

http://service-post:8080/swagger-ui.html被路由到公共地址https://host.com/services/post/swagger-ui.html

或者从另一种方式定义:

当 nginx 收到 on 请求时https://host.com/services/post/swagger-ui.html,它会剥离/services/post/前缀并将请求传递给路径上的post服务。/swagger-ui.html

在设置任何东西(使用默认 SpringDoc 配置)之前,我可以正确地看到http://service-post:8080/swagger-ui.html.

要在 host.com 上设置公共地址的路径,我使用:

然而,这似乎完全阻止了它:

/swagger-ui.html,/api-docs/v3/api-docs/swagger-config返回404forservice-post:8080/*https://host.com/services/post/*

似乎唯一可行的是https://host.com/services/post/swagger-ui/index.html,它显示了 petstore 文档。

我们没有使用 Spring Boot ,只使用5.3.1版本的 Spring MVC 。

那么如何设置以保持对原始路径(例如/api-docs)的处理,但在前缀路径()上执行查找/services/post/api-docs

0 投票
1 回答
472 浏览

maven - 带有 org.springdoc 的 Swagger-UI (v3) 确实显示和解释枚举不正确

我的 Swagger-UI 有问题:它确实按预期显示 Enums。

而不是像这样的简单表示,CATEGORY1它显示了完整的类,CATEGORY1(name=Cat 1)并且还在请求中使用它,比如http://localhost:8080/file/byCategory?category=Category.CATEGORY1%28name%3DCat%201%29

我想我可以使用正确的枚举描述发送请求(例如使用 Postman),并且服务器会响应,因此 api 本身可以工作。

对此问题重要的依赖项:

我还使用 Spring Boot (2.4.0) 和其他一些不应该成为问题的依赖项。

我的控制器:

}

我的枚举:

然而,我的 Swagger-UI 看起来像这样: 在此处输入图像描述

如前所述,它适用于 Postman(即使此时响应只是一个空数组): 在此处输入图像描述

0 投票
1 回答
130 浏览

spring-boot - Springdoc OpenAPI在schema和examples下展示类关系

我将 springdoc-openapi 用于 REST API 文档。我有两个类,它们之间具有一对一的关系。在我创建 API 之后,当我使用 API 时。它完全按照它在数据库中的存储方式返回,但文档中显示的示例值或模式显示了它们之间的完整关系。我不想显示它们之间的关系,而是只显示它会得到响应的方式。下图,第一个突出显示的是实际结果,第二个是显示的示例值。第二个显示 Room 和 Check-in 之间的关系。我怎样才能避免这种显示?

在此处输入图像描述

0 投票
0 回答
321 浏览

swagger - springdoc-openapi:初始化时不显示正确的标签

我正在使用 springdoc-openapi 创建 API 文档,并且我正在使用$ref来引用外部 yaml 文件。这是我的配置:

但是当我打开我的 swagger-ui 时,它不是我想要的正确标签:

招摇用户界面

然后,当我单击显示详细 API 时,它将是正确的。

招摇用户界面

请帮助我在初始化时更正标签。

0 投票
1 回答
495 浏览

java - Use springdoc in Spring MVC project with custom message converters

Adding springdoc to an existing Spring MVC REST API project causes problems with custom message converters. The project configures custom message converters to set the date output to a specific format and to remove fields that contain null. This is done using a @Configuration annotated class that extends WebMvcConfigurationSupport which overrides the configureMessageConverters and adds a custom converter as well as the default converters (addDefaultHttpMessageConverters).

To add springdoc (version 1.5.1) to the project I've followed the instructions here, with the minor change of registering org.springdoc.webmvc.ui.SwaggerConfig.class instead of the listed org.springdoc.ui.SwaggerConfig.class because the latter doesn't exist. This requires adding the @EnableWebMvc annotation, which in turn requires implementing WebMvcConfigurer instead of extending WebMvcConfigurationSupport. By using WebMvcConfigurer I can't add the default converters, by using only the custom converter the springdoc JSON is escaped and therefor not valid. If the @EnableWebMvc annotation isn't added the swagger-ui.html page is not available.

I want to either use @EnableWebMvc, implementing WebMvcConfigurer and using the custom converter but prevent escaping of the springdoc JSON by adding the default converters somehow or through some other way. Or I want to use the 'old' configuration, so extending WebMvcConfigurationSupport and not add the @EnableWebMvc annotation but somehow make the swagger-ui.html page reachable.

How can I achieve either of these options?

Edit 1

The configuration class has been annotated using @EnableWebMvc and implements WebMvcConfigurer, this way the swagger-ui.html page can be reached. The converters are customized using the following method:

This solution is based on the accepted answer here.

This way all JSON responses from the endpoints are configured not omit null fields and use the configured time zone, the springdoc JSON also isn't escaped.

I've tried configuring a MappingJackson2HttpMessageConverter bean and adding it to the list of converters however, the springdoc JSON gets escaped making it invalid.

Edit 2

With the changes mentioned in the first edit everything seems to work fine. Using Tomcat 7. However, the application will be deployed using Tomcat 9 and that results in a (somewhat nondescript) error.

The artifact name and application context have been replaced with and respectively to be on the safe side.

The exception under Tomcat 9 seems to be caused by the springdoc and/or Spring Boot dependency that has been added to the project. By downgrading springdoc from version 1.5.1 to 1.4.8 and Spring Boot from 2.4.0 to 2.3.5.RELEASE everything works fine under Tomcat 9 (and Tomcat 7).