Actualmente tenemos tres sitios en nuestra red. Uno escrito en Ruby on Rails y los otros dos escritos en PHP. Todos los sitios tienden a compartir muchos de los mismos datos y lógica. Me encuentro teniendo que repetir mucho del trabajo que hago en el lado de los rieles en el lado de PHP. Parece que necesitamos una API interna común para consolidar esto. Nunca antes había creado una API y tengo algunas preguntas.API REST interna
Rendimiento Si construyo la API como una aplicación independiente, parece que esto va a ser dos veces más lento. Como debe pasar por todo el ciclo de solicitud/respuesta en el extremo de la API y luego nuevamente en el lado de la aplicación pública. ¿Hay alguna manera de hacer esto más rápido? O tal vez un enfoque diferente?
Acceso API a través de la red local ¿Cómo accedería a la API a través de la red local? ¿Configuraría un servidor virtual en Apache que apunta a 127.0.0.1?
Recurso activo En mi caso (en el extremo de los rieles) ¿ActiveResource es la mejor manera de hacerlo o hay mejores opciones para consumir la API? También me pregunto cómo funcionarán las validaciones en el lado público. ¿ActiveResource reutiliza las reglas de validación o tendré que volver a crearlas en el lado público?
API Security Estoy pensando que no tendré que preocuparme demasiado por esto en este momento, ya que solo se puede acceder a la API (idealmente) a través de la red local. ¿Estoy en lo correcto en esta suposición?
Esa es una buena respuesta. ¿Podrías hablar un poco acerca de cómo debo configurar DNS/Apache para esto? ¿Sería suficiente simplemente crear una entrada DNS para api.mycompany.com que tenga un registro A para 127.0.0.1? O si apuntaba a la IP del servidor, y existía una regla en el firewall para limitar el acceso solo a esa IP, ¿afectaría eso el rendimiento? ¿O sería lo suficientemente inteligente como para saber que el IP es local y sería lo mismo que 127.0.0.1? – Andrew
Depende de la topología de su red, realmente. Si sus dos aplicaciones están ubicadas en el mismo sistema, fácilmente podría apuntarlas directamente entre sí. Si está utilizando algún tipo de hosting virtual dentro de Apache, es posible que no funcione exactamente. Si ese es el caso, probablemente necesite configurar un registro de host en su sistema local para señalarlo a sí mismo (es decir: en/etc/hosts señalaría api.mycompany.com a 127.0.0.1). –
En cuanto a la pregunta del firewall: probablemente deba verificar con su distribución individual de Linux. Si estás en Ubuntu, por ejemplo, estarías trabajando con UFW. Si estás en CentOS/RedHat, etc., probablemente termines trabajando directamente con iptables. Personalmente, creo que es más fácil tratar con iptables en ese caso particular. Dado que en su mayoría estarás bloqueando todo el tráfico entrante a las API que has creado. –