Estoy tratando de escribir un sitio web comercial "estándar". Por "estándar", quiero decir que este sitio ejecuta el HTML5, CSS y Javascript habituales para el front-end, un back-end (para procesar cosas) y ejecuta MySQL para la base de datos. Es un sitio CRUD básico: el front-end simplemente hace bonito lo que la base de datos tiene en la tienda; el backend escribe en la base de datos lo que sea que ingrese el usuario y realice algún procesamiento. Al igual que la mayoría de los sitios por ahí.
Al crear mis repositorios de Github para comenzar a codificar, me di cuenta de que no entiendo la distinción entre el front-end back-end y la API . Otra forma de formular mi pregunta es: ¿ dónde entra la API en esta imagen?
Voy a enumerar algunos detalles más y luego las preguntas que tengo; espero que esto les dé una mejor idea de cuál es mi pregunta real, porque estoy tan confundido que no sé la pregunta específica que hacer.
Algunos detalles más:
- Me gustaría probar el patrón Modelo-Vista-Controlador. No sé si esto cambia la pregunta / respuesta.
- La API será RESTful
- Me gustaría que mi back-end use mi propia API en lugar de permitir que el back-end haga trampa y llame a consultas especiales. Creo que este estilo es más consistente.
Mis preguntas:
- ¿El front-end llama al back-end que llama a la API? ¿O el front-end solo llama a la API en lugar de llamar al back-end?
- ¿El back-end solo ejecuta una API y la API devuelve el control al back-end (donde el back-end actúa como el controlador final, delegando tareas)?
Se alientan las respuestas largas y detalladas que explican el papel de la API junto con el back-end front-end. Si la respuesta depende del modelo de programación (modelos que no sean el patrón Modelo-Vista-Controlador), describa estas otras formas de pensar en la API. Gracias. Estoy muy confundido.
Esbocemos la arquitectura de un sitio web "típico", con un "front-end" y un "back-end". Y como es un sitio web, también tendremos un "cliente" explícitamente. (Dado que no hay forma de que JavaScript en un navegador llame a MySQL en un servidor directamente).
Para mayor claridad, los términos que estamos usando son:
Para un programa diseñado adecuadamente, cada uno de estos componentes tiene una API privada para comunicarse con los demás. El código PHP "front-end" no emite
SELECT
sentencias SQL arbitrarias directamente, sino que llama a procedimientos almacenados, SQL preautorizado o incluso llamadas PHP distintas a una instancia completamente diferente de PHP que se ejecuta en el servidor back-end . Estos procedimientos almacenados o llamadas HTTP distintas son en sí mismas una API.La definición no cambia incluso si permitimos cierta impureza de nuestro diseño. Si su
PHP
archivo escribe y envía una cadena SQL directamente a MySQL, TODAVÍA ES UNA API , aunque es muy inusual y es poco probable que repita.Tenga en cuenta que es completamente posible que su php front-end sea estrictamente sincrónico, sin ningún tipo de vudú AJAX. Si llama a las mismas funciones externas de PHP en dicho archivo síncrono, podría considerar que usan la misma API que la versión del lado del cliente, aunque el uso del término "API" aquí puede no dar ninguna claridad real.
Una API como interfaz de programación de aplicaciones , después de todo, y realmente se refiere a cada vez que un programa llama fuera de su propio proceso. Si está escribiendo un proyecto que tiene tanto un front-end como un back-end, ya sean AJAX / PHP / MySQL como los anteriores o MS Access / SQL Server, vale la pena especificar explícitamente cómo se llamarán entre sí, si no por otra razón que no sea para saber dónde buscar cuando algo se rompe.
(Y el tema de la API pública es algo completamente distinto. En nuestro ejemplo anterior, solo la URL que se muestra en el cliente es una "API pública". Todo lo demás es, en esencia, "privado". Como en, no esperes cualquier código fuera de su control para llamar a su API interna, y usted niega dichos resultados directamente o se reserva el derecho de hacerlo en el futuro.
fuente
una API maneja solicitudes http como GET, POST, FETCH, DELETE ... que se pueden usar dependiendo de su acceso a token para recuperar datos en formatos específicos como json, xml, etc.
Estos "datos" se pueden utilizar en su propia aplicación para obtener API (interfaz de programación de aplicaciones), que es un servicio web accesible al público para recopilar datos que pueden ser interesantes para alguna audiencia.
Estos datos pueden devolver un conjunto de datos que representan un error o recuperar datos de su servidor API
API está destinado a ser back-end para que pueda usarse en cualquier entorno de front-end. Esto significa que se puede usar en una aplicación web, android, ios ... que puede manejar solicitudes https
fuente