2017-05-23 3 views
-3

Comment intégrer swagger ui dans apache cxf jax-rest api dans une application de démarrage?Comment intégrer swagger dans apache cxf jax-rest api dans une application de démarrage à ressort?

+0

S'il vous plaît envisager de lire https://stackoverflow.com/help/how-to-ask. Des questions comme celles-ci sont trop générales pour ce site. Vous trouverez des blogs entiers et des manuels dédiés à répondre à cette question. –

+0

Ceci est couvert dans de nombreux tutoriels, vous devez donc expliquer quel problème spécifique vous avez rencontré. – csmckelvey

Répondre

1

Je suis d'édition d'un blog avec une démo, en fait la démonstration est terminée sur ce sujet précis et un extrait du code source ici:

Modifié: Vient de paraître Implementing APIs using Spring Boot, CXF and Swagger

pom. xml:

<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-spring-boot-starter-jaxrs</artifactId> 
    <version>${cxf.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-rt-rs-service-description</artifactId> 
    <version>${cxf.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-rt-rs-service-description-swagger</artifactId> 
    <version>${cxf.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.webjars</groupId> 
    <artifactId>swagger-ui</artifactId> 
    <version>${swagger-ui.version}</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.jaxrs</groupId> 
    <artifactId>jackson-jaxrs-json-provider</artifactId> 
</dependency> 

classe principale:

DemoCxfApplication.java:

@SpringBootApplication(scanBasePackages = { "com.example.demo.rest" }) 
public class DemoCxfApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(DemoCxfApplication.class, args); 
    } 
} 

classes de configuration:

FeaturesConfig.java:

package com.example.demo.rest.config; 
... 
@Configuration 
public class FeaturesConfig { 

    @Value("${cxf.path}") 
    private String basePath; 

    @Bean("swagger2Feature") 
    public Feature swagger2Feature() { 
     Swagger2Feature result = new Swagger2Feature(); 
     result.setTitle("Spring Boot + CXF + Swagger + Docker Example"); 
     result.setDescription("Spring Boot + CXF + Swagger + Docker Example description"); 
     result.setBasePath(this.basePath); 
     result.setVersion("v1"); 
     result.setSchemes(new String[] { "http", "https" }); 
     result.setPrettyPrint(true); 
     return result; 
    } 
} 

ProvidersConfig.java:

package com.example.demo.rest.config; 
... 
@Provider 
@Configuration 
public class ProvidersConfig { 

    @Bean 
    public JacksonJsonProvider jsonProvider() { 
     return new JacksonJsonProvider(); 
    } 
} 

Interface des ressources et la mise en œuvre:

HelloResource.java

package com.example.demo.rest.v1; 
... 
@Path("/") 
@Api(value = "Hello resource Version 1", consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public interface HelloResource { 

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

HelloResourceImpl.java

package com.example.demo.rest.v1.impl; 
... 
// No JAX-RS annotation in class, method or method arguments 
@Component("helloResourceV1") 
public class HelloResourceImpl implements HelloResource { 

    @Override 
    public Response getHelloVersionInUrl(String name) { 
     LOGGER.info("getHelloVersionInUrl() v1"); 
     return this.getHello(name, "Version 1 - passed in URL"); 
    } 
... 
} 

fichier de propriétés:

application.yml

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

management.security.enabled: false 

# http://cxf.apache.org/docs/springboot.html#SpringBoot-SpringBootCXFJAX-RSStarter 
cxf: 
    path: /api # CXFServlet URL pattern 
    jaxrs: 
    component-scan: true 

Swagger UI disponible à: http://<host:port>/api/api-docs?url=/api/swagger.json

WADL disponible à: http://<host:port>/api?_wadl

+0

Intéressant, décliné sans raison apparente. – ootero