Implementar swagger en Jersey 2

Posted: 25th October 2016 by Jak in j2ee, Java, jersey2, rest, swagger

Swagger es una grandisima idea, simple y efectiva para crear la documentación de servicios rest, todo lo hace a partir de anotaciones. Se expone una app web donde están los contratos de interfaz y desde ahi mismo se pueden realizar las peticiones de prueba, es importante que solo se haga en desarrollo, en produccion se debe quitar la app web.

Para mas información: http://swagger.io/

Esta implementación es es con maven y con jersey 2 por servlet.

agregar en el pom:


<swagger.version>1.5.0</swagger.version>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jersey2-jaxrs</artifactId>
<version>${swagger.version}</version>
</dependency>

En el web.xml, en el servlet del jersey agregar: io.swagger.jaxrs.listing


<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value><strong>io.swagger.jaxrs.listing,</strong> com.*.srews.resource</param-value>
</init-param>

Y otro servlet: com.*.*.servlets.Bootstrap


<servlet>
<servlet-name>SwaggerBootstrap</servlet-name>
<servlet-class>com.*.*.servlets.Bootstrap</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>

Esta clase lo que hará es definir la entrada para crear el swagger.json, que básicamente es el archivo que la app web leerá con toda la documentación.

La clase :


/**
*
* @author Jakofff
*/
public class Bootstrap extends HttpServlet {

@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);

BeanConfig beanConfig = new BeanConfig();
beanConfig.setTitle("API");
beanConfig.setDescription("API");
beanConfig.setVersion("1.0.0");
beanConfig.setContact("[email protected]");
beanConfig.setSchemes(new String[]{"http", "https"});
beanConfig.setHost("localhost");
beanConfig.setBasePath("/rest/api");
beanConfig.setResourcePackage("com.*.resource");
beanConfig.setScan(true);
}
}

Después bajar el UI:

https://github.com/swagger-api/swagger-ui/releases

Copiar todo el contenido de la carpeta dist

Y ponerlo en una carpeta en WebPages/ui

Acceder a http://localhost/rest/api/ui

y listooo!

 

Share