英文:
How to use openapi.yaml file to generate swagger-ui?
问题
I have defined the REST API using an OpenApi specification file. Then I generated Java classes from this specification. Is there a way to use api.yaml to generate swagger-ui.html instead of java classes?
我已经使用OpenApi规范文件定义了REST API,然后从该规范生成了Java类。是否有一种方法可以使用api.yaml来生成swagger-ui.html而不是Java类?
I tried to create an endpoint (with /v3/api-docs path) that reads the file and returns the content of it as a http response. It's working but I have a feeling that there may be a better solution.
我尝试创建了一个端点(使用/v3/api-docs路径),它可以读取文件并将其内容作为HTTP响应返回。它能够工作,但我觉得可能有更好的解决方案。
Commonly Swagger generates automatically openapi.yaml
under the /v3/api-docs endpoint and the Swagger UI uses it to generate swagger-ui.html. In my case I already have openapi.yaml
but I don't know how to tell Swagger-UI to take my file to generate the HTML page.
通常,Swagger会在/v3/api-docs端点下自动生成openapi.yaml
,然后Swagger UI使用它来生成swagger-ui.html。在我的情况下,我已经有了openapi.yaml
,但我不知道如何告诉Swagger-UI使用我的文件来生成HTML页面。
英文:
I have defined the REST API using an OpenApi specification file. Then I generated Java classes from this specification.
Is there a way to use api.yaml to generate swagger-ui.html instead of java classess?
I tried to create an endpoint (with /v3/api-docs path) that reads the file and returns the content of it as a http response. It's working but I have a feeling that there may be a better solution.
Commonly Swagger generates automatically openapi.yaml
under the /v3/api-docs endpoint and the Swagerr UI uses it to generate swagger-ui.html. In my case I already have openapi.yaml
but I don't know how to tell to Swagger-UI to take my file to generate the html page
Thanks
答案1
得分: 1
openapi-generator
有多个不同的生成器,可以读取一个yaml文件,并将代码输出为您喜欢的编程语言。其中一些生成器包括java
、html
、html2
、spring
和javascript
。完整的生成器列表可以在这里找到。
可以通过CLI运行openapi-generator
,还可以使用其maven和gradle插件。
由于您已经有一个有效的openapi规范文件,我建议使用生成器生成一个使用spring-boot
库并将documentationProvider
设置为springdoc
的spring服务器。这将生成具有适当的springdoc注解的spring java类,以及您要求的swagger-ui.html
端点。
英文:
The openapi-generator
has several different generators which can read in a yaml file and output code in your preferred language. Some of the generators include java
, html
, html2
, spring
, and javascript
. The comprehensive list of generators can be found here.
The openapi-generator
can be ran via CLI, as well as its maven and gradle plugins.
Since you already have a valid openapi specification file, I'd recommend using the generator to generate a spring server using the spring-boot
library and set the documentationProvider
to springdoc
. This will generate the spring java classes with appropriate springdoc annotations as well as the swagger-ui.html
endpoint you are requesting.
答案2
得分: 0
将 Springdoc v2 依赖项添加到 pom.xml
中,生成了一个基于组件扫描的控制器的 Swagger UI 页面,可通过 http://localhost:8080/swagger-ui/index.html 访问,以及其 OpenAPI 描述位于 http://localhost:8080/v3/api-docs。
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.4</version>
</dependency>
请注意,我使用的是 Spring Boot 3.0.2。
英文:
Including Springdoc v2 dependency into pom.xml
generated a Swagger UI page based on the component-scanned controllers accessible at http://localhost:8080/swagger-ui/index.html and its OpenAPI description at http://localhost:8080/v3/api-docs.
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.4</version>
</dependency>
Note I use Spring Boot 3.0.2
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论