2012-02-08 16 views
34

Estoy buscando una herramienta que me pueda ayudar a generar la documentación API RESTful. Mi servidor está escrito en Java y usa el framework Spring MVC. No tengo VIEWS en mi servidor. Es un servicio 100% RESTful y todo lo que hace es consumir JSON y escupe JSON.Spring REST API Documentation using Swagger

Me preguntaba si Swagger es compatible con las anotaciones de Spring?

Respuesta

21

Actualmente no hay un módulo de Spring MVC Swagger disponible (de Wordnik al menos) pero, en general, habilitar swagger en un servicio REST basado en JVM es bastante simple.

El soporte del servidor Swagger se divide en dos partes: el servidor central y la integración con el servicio REST. Vea el Swagger github repo. Swagger core define el documento que representa el servicio REST, los parámetros, los valores permitidos, las operaciones HTTP, etc. La integración del servidor conecta este documento a la estructura del marco REST. Wordnik usa Jersey a través de JAX-RS y lanzó swagger-jaxrs para hacer esta integración. También hay un módulo Swagger-Play que se lanzará al repositorio del módulo Play en breve.

Si desea activar la arrogancia en otro marco RESTO (como Spring MVC), sigue estos pasos:

1) Generar un lector de API para generar un objeto com.wordnik.swagger.core.Documentation. Consulte la versión JAX-RS, así como la de play.

2) Cree un punto final REST que devuelva una versión JSON/XML del objeto Documentation al cliente. De nuevo, JAX-RS y play.

3) Agregue un filtro para interceptar las solicitudes para imponer el acceso a recursos o a nivel de objeto.

Así que, en resumen, podría armarse con bastante facilidad.

+1

¿Es posible crear un módulo basado en Java puro? – tbruyelle

+17

Ahora existe un módulo SpringMVC para Swagger: https://github.com/martypitt/swagger-springmvc –

+0

¿Puede por favor enviar una etiqueta de swagger? Vea aquí: http://stackoverflow.com/documentation/swagger/commit – Stephan

3

Si solo después de generar un documento API interactivo (sin la necesidad de colaboración de estilo wiki), I/O Docs sería una solución mejor requiere mucho menos esfuerzo para configurar, usar y personalizar, en mi humilde opinión.

Se está ejecutando en nodejs y Redis. Solo necesita escribir un esquema JSON de su API y genera un sitio HTML/JS que describe su API y permite a los desarrolladores jugar en vivo desde su navegador.

Planeo alojar mi API en mi servidor (como requerir que alguien instale otros 2 softwares solo para ver la API sería una locura) pero el esquema JSON ya tiene una estructura legible y compacta que creo que sería suficiente para la colaboración con otros programadores. Es un proyecto pequeño.

Hay un similar question es posible que desee retirar.

20

Hay una implementación Swagger-SpringMVC en progreso here y ejemplos here.

La especificación v1.2 está completamente implementada y es compatible (es decir, se generan modelos, con soporte completo para genéricos), y está en desarrollo activo.

+0

Es un par de años después. El proyecto de ejemplo que enumeró está usando Swagger 0.7.0 (la versión actual en este momento es 0.8.3). ¿Puedes confirmar que el proyecto de ejemplo sigue siendo relevante? Tengo problemas para configurar mi proyecto. –

+0

@ steve.hanson 0.8.4 ha sido lanzado y tiene enlaces actualizados a la demostración de muestra en el archivo Léame. Además, la configuración se ha simplificado enormemente –

5

Otra implementación de Swagger para Spring MVC es swagger4spring-web.

Es similar a Swagger-SpringMVC y es compatible con todas las anotaciones de Swagger y genera el esquema JSON para los tipos y parámetros de devolución.También funciona sin anotaciones de arrogancia.

3

Swagger 2.0 es la última versión de Swagger.

Existen diferentes variaciones de Swagger ahora disponibles para diferentes necesidades.

io.swagger es el paquete para bibliotecas swagger y necesita frascos de resorte separados para acoplarlo con Spring. Esta es la versión 2 de fanfarronería.

io.springfox es Springfox Swagger2, en el que swagger viene integrado con Spring.

com.mangofactory es swagger integrado con el marco Spring Web MVC.