我试图在SpringBoot(1.5.8)中使用Swagger(2.6)和Jersey(1.5)
我对公共API的调用工作正常http://localhost:57116/rest/customer/list
当我加载http://localhost:57116/swagger-ui.html网站时,它会显示带有许多默认API的Swagger,但它不会显示我的API。
我尝试了这个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我不会看到我的公共API。它似乎忽略了我的Swagger配置
答案 0 :(得分:4)
您在org.springframework.boot:spring-boot-starter-jersey
中使用org.springframework.boot:spring-boot-starter-web
依赖项或pom.xml
吗?
您似乎也在使用SpringFox
而不是BeanConfig
生成的Swagger bean。
为了让Swagger工作,您应该依赖spring-boot-starter-jersey
并删除所有SpringFox依赖项,包括@EnableSwagger2
注释。
Jersey应用程序中的swagger.json
由io.swagger:swagger-jersey2-jaxrs
库生成。至于Swagger UI,您可以使用vanilla Swagger UI静态资源。
您可能还需要将 BeanConfig 中的资源包更改为您的应用程序库包。目前,您有:
beanConfig.setResourcePackage("io.swagger.resources");
这是一个有Spring Boot,Jersey和Swagger的工作example。 在此示例中,资源包设置为应用程序基础包:
beanConfig.setResourcePackage("com.basaki");