2016-03-13 112 views
3

我正在使用springboot +球衣来实现网页宁静。现在我将把大举集成到我们的应用程序中。我确实如下。如何整合Swagger与运动衫+弹簧靴

我加了下面就的build.gradle依赖性:

compile('io.springfox:springfox-swagger2:'+springfoxSwaggerVersion) 
compile('io.springfox:springfox-petstore:'+springfoxSwaggerVersion) 
compile('io.springfox:springfox-swagger-ui:'+springfoxSwaggerVersion) 
compile('io.swagger:swagger-jersey2-jaxrs:1.5.8') 

我能够启动Web应用程序,但我徘徊其中URL是招摇?我试着用http://localhost:8080,http://localhost:8080/swaggerhttp://localhost:8080/swagger-ui.html。但是他们都不能访问。

+0

贵应用程序有一个上下文根?它应该在相对于上下文根的swagger-ui.html中可用。 – nerdherd

+0

上下文根只是“/”。 –

回答

0

也许你使用,而旧版本springfox的,但现在(对于版本2.4.0),它必须配置从您的代码非常不同,看到http://springfox.github.io/springfox/docs/current/

例如,我有以下springfox配置:

@Configuration 
@EnableSwagger2 
class SwaggerConfig { 
    @Bean 
    Docket rsApi() { 
     new Docket(DocumentationType.SWAGGER_12) 
      .apiInfo(apiInfo()) 
      .select() 
        .apis(RequestHandlerSelectors.basePackage('com.test.service')) 
      .paths(PathSelectors.any()) 
      .build() 
      .pathMapping('/') 
      .useDefaultResponseMessages(false) 
    } 

    private ApiInfo apiInfo() { 
     new ApiInfoBuilder() 
      .title('Test API') 
      .description('Test API') 
      .version('0.0.10.SNAPSHOT') 
      .termsOfServiceUrl('') 
      .contact('Test company') 
      .license('Public') 
      .licenseUrl('http://example.com/') 
      .build() 
    } 
} 
6

我认为@EnableSwagger2注释和springfox如果端点是使用Spring MVC而不是JAX-RS实现来实现的,则依赖关系将起作用。

我几个月前在博客这个,Microservices using Spring Boot, Jersey Swagger and Docker

基本上,如果你需要记录您的泽西实现端点,你将需要:

1) 请确信你的春天启动的应用程序扫描

@SpringBootApplication(
    scanBasePackages = { 
     "com.asimio.jerseyexample.config", "com.asimio.jerseyexample.rest" 
    } 
) 

2)泽西配置类实现:位于特定的包(即com.asimio.jerseyexample.config)经由部件

package com.asimio.jerseyexample.config; 
... 
@Component 
public class JerseyConfig extends ResourceConfig { 

    @Value("${spring.jersey.application-path:/}") 
    private String apiPath; 

    public JerseyConfig() { 
     // Register endpoints, providers, ... 
     this.registerEndpoints(); 
    } 

    @PostConstruct 
    public void init() { 
     // Register components where DI is needed 
     this.configureSwagger(); 
    } 

    private void registerEndpoints() { 
     this.register(HelloResource.class); 
     // Access through /<Jersey's servlet path>/application.wadl 
     this.register(WadlResource.class); 
    } 

    private void configureSwagger() { 
     // Available at localhost:port/swagger.json 
     this.register(ApiListingResource.class); 
     this.register(SwaggerSerializers.class); 

     BeanConfig config = new BeanConfig(); 
     config.setConfigId("springboot-jersey-swagger-docker-example"); 
     config.setTitle("Spring Boot + Jersey + Swagger + Docker Example"); 
     config.setVersion("v1"); 
     config.setContact("Orlando L Otero"); 
     config.setSchemes(new String[] { "http", "https" }); 
     config.setBasePath(this.apiPath); 
     config.setResourcePackage("com.asimio.jerseyexample.rest.v1"); 
     config.setPrettyPrint(true); 
     config.setScan(true); 
    } 
} 

3)使用JAX-RS(新泽西州)和扬鞭注释资源实现:

package com.asimio.jerseyexample.rest.v1; 
... 
@Component 
@Path("/") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
@Api(value = "Hello resource", produces = "application/json") 
public class HelloResource { 

    private static final Logger LOGGER = LoggerFactory.getLogger(HelloResource.class); 

    @GET 
    @Path("v1/hello/{name}") 
    @ApiOperation(value = "Gets a hello resource. Version 1 - (version in URL)", response = Hello.class) 
    @ApiResponses(value = { 
     @ApiResponse(code = 200, message = "Hello resource found"), 
     @ApiResponse(code = 404, message = "Hello resource not found") 
    }) 
    public Response getHelloVersionInUrl(@ApiParam @PathParam("name") String name) { 
     LOGGER.info("getHelloVersionInUrl() v1"); 
     return this.getHello(name, "Version 1 - passed in URL"); 
    } 
... 
} 

4)确保您的应用的春天启动配置文件,使执行器终端的Spring MVC(区别)和泽西岛(资源)的端点:

application.yml

... 
# Spring MVC dispatcher servlet path. Needs to be different than Jersey's to enable/disable Actuator endpoints access (/info, /health, ...) 
server.servlet-path:/
# Jersey dispatcher servlet 
spring.jersey.application-path: /api 
...