gpt4 book ai didi

java - Jersey + Spring + Tomcat 环境不生成swagger.json

转载 作者:行者123 更新时间:2023-11-28 23:25:42 25 4
gpt4 key购买 nike

我已经阅读了 Swagger 文档并根据文档对其进行了配置。

当我请求 http://localhost:8080/rest/api-docs页面,Swagger 正确显示所有信息,但它不会生成 swagger.json,所以 http://localhost:8080/rest/swagger.json返回 404。

我的端点 http://localhost:8080/rest/test也可以正常工作。

这是我的 web.xml:

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>jersey</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.test.JerseyConfig</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

<!-- Swagger Config -->
<servlet>
<servlet-name>Jersey2Config</servlet-name>
<servlet-class>com.wordnik.swagger.jersey.config.JerseyJaxrsConfig</servlet-class>
<init-param>
<param-name>api.version</param-name>
<param-value>1.0.0</param-value>
</init-param>
<init-param>
<param-name>swagger.api.basepath</param-name>
<param-value>http://localhost:8080/rest/</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

JerseyConfig 类:

public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(Test.class);
//....
// Swagger
register(com.wordnik.swagger.jersey.listing.ApiListingResource.class);
register(com.wordnik.swagger.jersey.listing.ApiListingResourceJSON.class);
register(com.wordnik.swagger.jersey.listing.JerseyApiDeclarationProvider.class);
register(com.wordnik.swagger.jersey.listing.JerseyResourceListingProvider.class);
}
}

Test.class 是一个简单的端点,用 Swagger @Api 注释。

@Path("/test")
@Api(value = "/test", description = "tttttt")
public class TestResource {

@GET
@ApiOperation(value = "Checks server")
@ApiResponses(@ApiResponse(code = 200, message = "Server is available"))
public Response check() {
return Response.ok().build();
}
}

应用程序部署在 Tomcat 中。


根据 Jersey ResourceModel,Swagger 创建的唯一端点是:

   GET     /api-docs
GET /api-docs/{route: .+}

最佳答案

swagger.json 位置是 swagger 定义的推荐位置,但它不是可以生成它的唯一位置。请尝试将 api-docs 位置放在您的 swagger-ui 中,它应该可以正常工作。

关于java - Jersey + Spring + Tomcat 环境不生成swagger.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37418501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com