Jersey REST API como una aplicación web separada

Pregunta rápida de diseño: es mejor usar una aplicación web separada para una(s) API(s) REST o no.

Actualmente tengo una API REST de Jersey que funciona bien para la comunicación de máquina a máquina. Es relativamente simple solo con GETS. La estructura es de un front-end Jersey REST APi, un dao a la tienda db y seguridad de primavera para interceptar las direcciones URL, etc. Esto funciona bien.

Sin embargo, ahora necesito crear una aplicación web para permitir a los usuarios existentes la capacidad de iniciar sesión y monitorear el uso de su API, registrarse para una cuenta de usuario, restablecer sus credenciales y cambiar su suscripción, etc. (y más).

Me pregunto si debería combinar los dos y compartir el mismo archivo WAR, ya que ambos usan las mismas bases de datos de back-end, etc. Sin embargo, uno tiene estado, el otro es una API REST sin estado que requiere autenticación por solicitud...

Entonces, el enfoque que adopté es tratar la aplicación web con estado como cliente de la API REST y hacer lo siguiente:

1) Trate la API REST como una aplicación web independiente.

2) Cree la aplicación web con estado como una aplicación web separada y use spring mvc o cualquier otra cosa para el front-end. El almacenamiento back-end persistente será el mismo para ambos. También habrá un componente de administración administrado por la seguridad basada en roles de Spring.

Para la segunda aplicación web, permitiré que los usuarios realicen llamadas de ejemplo a la API REST (la primera guerra simplemente haciendo clic en los enlaces y usando sus credenciales de inicio de sesión).

¿Parece razonable este enfoque? Es decir, un WAR para las API REST y un WAR separado para la aplicación web con estado.

Agradecería cualquier comentario de aquellos con más experiencia en REST.

preguntado el 10 de marzo de 12 a las 16:03

1 Respuestas

Hacer que la API de REST sea una aplicación separada es un buen enfoque, independientemente de las demás circunstancias. Debe tener un jar común que contenga la lógica empresarial, que puede incluir en todos los proyectos. De esa forma, podrá invocar métodos comerciales tanto en la API como en otros proyectos web sin ninguna duplicación.

respondido 10 mar '12, 20:03

Gracias por tu comentario. Solo para aclarar, ¿recomienda varios frascos para compartir dentro de una sola aplicación web de guerra, o varios frascos para compartir en aplicaciones separadas, ya que esto es lo que tengo en mente? gracias de nuevo. - user983022

compartir los frascos a través de aplicaciones separadas - Bozho

Solo agregaría que no cometas el error de ahorrar tiempo y cortocircuitar la API. Todo lo que implique una interacción con la API debe realizarse a través de la API. En mi trabajo, los mantuve separados explícitamente al NO compartir el código. Si necesito compartir código, lo más probable es que se deba agregar una funcionalidad a la API que aún no existe. - Casey

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.