gpt4 book ai didi

jersey - 如何在 Spring 中将 Swagger 与 Jersey 一起使用?

转载 作者:行者123 更新时间:2023-12-04 19:29:00 25 4
gpt4 key购买 nike

我正在尝试在 SpringBoot (1.5.8) 中使用 Swagger (2.6) 和 Jersey (1.5)

我对公共(public) API 的调用工作正常 http://localhost:57116/rest/customer/list

当我加载 http://localhost:57116/swagger-ui.html站点,它显示带有许多默认 API 的 Swagger,但它不显示我的 API。
enter image description here

我试着关注这个 Config Swagger-ui with Jersey但它仍然没有回来。

这是我的 JerseyConfig

@Configuration
@ApplicationPath("rest")
public class JerseyConfig extends ResourceConfig {

public JerseyConfig()
{
register(CustomerImpl.class);
configureSwagger();
}
public void configureSwagger()
{
this.register(ApiListingResource.class);
this.register(SwaggerSerializers.class);
BeanConfig beanConfig = new BeanConfig();
beanConfig.setTitle("Swagger sample app");
beanConfig.setVersion("1.0.0");
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setHost("localhost:57116");
beanConfig.setBasePath("/rest");
beanConfig.setResourcePackage("com.mypackage");
beanConfig.setScan(true);
}
}

这是我的应用程序类
@SpringBootApplication
@EnableDiscoveryClient
@EnableSwagger2
public class CustomerApplication {...}

这是我的终点
@Component
@Path("customer")
@Api(value = "Customer API")
public class CustomerImpl {
@Path("list")
@GET
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "list")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Success", response = List.class),
@ApiResponse(code = 401, message = "Unauthorized"),
@ApiResponse(code = 403, message = "Forbidden"),
@ApiResponse(code = 404, message = "Not Found"),
@ApiResponse(code = 500, message = "Failure")})
public String[] getList()
{
return new String[]{"IBM", "Microsoft", "Victor"};
}
}

当我使用 Spring RestController 尝试类似的配置时,它工作正常,但使用 Jersey 我看不到我的公共(public) API。它似乎忽略了我的 Swagger 配置

最佳答案

您在使用 org.springframework.boot:spring-boot-starter-jersey依赖或 org.springframework.boot:spring-boot-starter-web在您的 pom.xml ?

您似乎也在使用 SpringFox 生成的 Swagger bean。而不是你的BeanConfig .

为了让 Swagger 工作,您应该依赖 spring-boot-starter-jersey并删除所有 SpringFox 依赖项,包括 @EnableSwagger2注解。
swagger.json在 Jersey 应用程序中由 io.swagger:swagger-jersey2-jaxrs 生成图书馆。至于 Swagger UI,可以使用 vanilla Swagger UI静态资源。

您可能还需要更改 资源包在您的配置到您的应用程序基础包。目前,您有:

beanConfig.setResourcePackage("io.swagger.resources");

这是一个有效的 example搭配 Spring Boot、Jersey 和 Swagger。
在此示例中,资源包设置为应用程序基础包:
beanConfig.setResourcePackage("com.basaki");

关于jersey - 如何在 Spring 中将 Swagger 与 Jersey 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47491696/

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