2012-07-30 27 views
5

Soy curioso si alguien puede señalarme un buen ejemplo/mejor práctica de organizar el código de la API REST con el control de versiones (basado en uri, significa "/ v1/zzz" y "/ v2/xxx" o algo mejor dependiendo de Aceptar encabezado) - en el proyecto Java/Spring? Me temo que lo estoy haciendo demasiado complicado en mi proyecto en este momento, por lo que sería bueno aprender de los demás.Mejores prácticas (ejemplos?) Sobre la organización del código REST API versionado en el proyecto Java/Spring?

Aclaración: no estoy seguro si debería hacerlo a través de filtros, y luego uso un patrón de diseño para cambiar el comportamiento, pero esto hará que mi filtro sea bastante complicado ... o puede que no esté pensando en algún truco con la primavera y DI, entonces puedo limpiar mi código. el enfoque más simple es algún patrón de estrategia en cada método que tendrá versiones diferentes, pero no parece estar demasiado limpio tampoco :-(

+0

Sería de gran ayuda si pudieras mostrarnos por primera vez lo que estás haciendo actualmente, no sea que acabemos por darte una sugerencia que es igual de complicada. ¿O solo te estás refiriendo al patrón de URL? ¿Qué te hace pensar que es demasiado complicado? Considere agregar esta información a través de un [edit] a su pregunta para mayor claridad. Gracias. – jmort253

+0

Además, ¿cómo sabes cuándo tienes una nueva versión de tu API? Supongo que está modificando activamente su código, pero ¿qué criterio utiliza para determinar cuándo pasar de v1 a v2? – jmort253

+0

posible duplicado de [Mejores prácticas para versiones de API?] (Http://stackoverflow.com/questions/389169/best-practices-for-api-versioning) – jmort253

Respuesta

3

Le recomiendo leer el libro y los blogs en Apigee http://offers.apigee.com/api-design-ebook-bw/ Me di cuenta de que daba me consejos muy prácticos para el diseño de las direcciones URL y haciendo tratamiento de errores.

http://www.stormpath.com/blog/spring-mvc-rest-exception-handling-best-practices-part-2 tiene un gran artículo sobre cómo configurar MVC primavera para hacer genérico de error de manipulación para aplicaciones de descanso.

en cuanto a la filtración de aceptar headrs que es bastante fácil de hacer, ya que la primavera te permite restringir el mapeo de un método de manejo basado en el filtro, como en los encabezados = en el req. Más información a continuación.

@RequestMapping(value="/narrow/headers/{name}/{email}/{customerNumber}", 
     method={RequestMethod.POST,RequestMethod.GET}, 
     headers="Referer=http://localhost:8080/SpringMVC/request-mappings.html") 
public ResponseEntity<String> narrowOnHeaders(
     @PathVariable("name")String name, 
     @PathVariable("email") String email, 
     @PathVariable("customerNumber") Integer customerNumber, 
     @RequestHeader("Referer") String referer 
    ) 
+3

URL roto: 'La URL solicitada/api-design-ebook -bw/no se encontró en este servidor. – manuna

Cuestiones relacionadas