Estoy desarrollando un servicio web REST (Java, Jersey). La gente para la que estoy haciendo esto quiere acceder directamente al servicio web a través de Javascript. Un poco de instinto me dice que no es una buena idea, pero realmente no puedo explicar ese instinto. Mi enfoque natural hubiera sido que el servicio web hiciera la lógica real y el acceso a la base de datos, pero también tuviera una capa de scripts (relativamente delgada) del lado del servidor (por ejemplo, en PHP). Los clientes hablarían con la capa PHP, que a su vez hablaría con el servicio web. (El servicio web sería bastante local para el servidor Apache/PHP e implícitamente confiará en las llamadas desde la capa de script. La capa de script se encargaría de la administración de la sesión). (Por cierto, no estoy hablando solo de ocultar el servicio web detrás de un Apache que simplemente redirecciona las llamadas)¿Expone el servicio web directamente a los clientes web o mantiene una delgada capa de scripts en el servidor?
Pero como me encuentro a falta de palabras/argumentos para explicar mi instinto, me pregunto si mi instinto es correcto, nótese que mientras he estado desarrollando todo tipo de software en todo tipo de idiomas y marcos por 17 años, esta es la primera vez que desarrollo un servicio web.
Así que mi pregunta es básicamente: ¿cuál es su opinión? ¿Hay alguna configuración estándar? ¿Está mi instinto totalmente equivocado? ¿O parcialmente? ; P
Muchas gracias,
Max
PS: Yo podría añadir unos pocos bits de información sobre el uso previsto de toda la aplicación:
- se accederá por diferentes tipos de usuarios, parcialmente público en general, parcialmente privilegiado
- por lo tanto, todas las principales combinaciones de OS/navegador se pueden esperar como clientes
- Sin embargo, escribir el cliente no es mi responsabilidad
- tendrá potencialmente muy alta carga/tráfico
- lógica del servicio web más adelante se ampliará de forma masiva para otro producto que es básicamente un superconjunto de la funcionalidad del proyecto actual
- existe una probabilidad significativa de que en algún momento una API deba ser expuesta y pueda ser utilizada por desarrolladores de terceros; obviamente, con algunas restricciones
- en algún punto, la vista pública del producto también debería ser accesible a través de teléfonos inteligentes (en otras palabras, tal vez una versión personalizada del sitio para adaptarse a la pantalla más pequeña y diferentes métodos de entrada)