问题标签 [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.
spring-boot - Spring Boot 2 OpenAPI 3 文档的自定义模式
我需要为我的 Spring Boot 2 项目集成 OpenAPI 3 文档。我们没有在控制器上使用模态/DTO。
这是示例控制器:
请求正文:
我的回复:
我无法找到为我的自定义 Map 对象添加 OpenAPI 文档的方法。我想手动为我的地图中的每个属性添加key
, description
, 。type
example(s)
谁能建议如何做到这一点?
swagger - 从多个 OpenAPI 规范端点服务一页?
我们正在运行一组微服务,每个微服务都向 url 公开 open-api 规范,如下所示。
url 打开 open-api json(不是 UI)。
有谁知道我可以将这些组合起来并能够通过带有 UI 的 https://{domain}/v1/apis 之类的 url 提供所有 api 的工具?
我查看了谷歌,我看到的所有内容都要求我创建一个包含所有 api 的单个 json 文件,而不是动态地提供这些。
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 文档?
如果这很重要,这是我的依赖:
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=(方法和阿尔法)
我该如何解决这个问题?
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
返回404
forservice-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
?
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 - springdoc-openapi:初始化时不显示正确的标签
我正在使用 springdoc-openapi 创建 API 文档,并且我正在使用$ref
来引用外部 yaml 文件。这是我的配置:
但是当我打开我的 swagger-ui 时,它不是我想要的正确标签:
然后,当我单击显示详细 API 时,它将是正确的。
请帮助我在初始化时更正标签。
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).