En el mundo actual del desarrollo de software, las APIs (Interfaces de Programación de Aplicaciones) son una pieza fundamental para la creación de aplicaciones modernas. Permiten que diferentes sistemas se comuniquen entre sí de manera eficiente, lo que abre la puerta a la interoperabilidad y escalabilidad entre plataformas. Dentro de este ecosistema, uno de los tipos más utilizados es la API REST. En esta entrada, te explicaremos qué es una API REST, cómo funciona y por qué es esencial para el desarrollo de aplicaciones web.
¿Qué es una API?
Una API es una interfaz que permite que dos aplicaciones se comuniquen entre sí. Actúa como un intermediario, facilitando que un software consuma o interactúe con los datos de otro sistema. Las APIs son vitales para integrar funcionalidades de distintos sistemas, compartir datos o permitir que aplicaciones externas usen tus recursos.
¿Qué es REST?
REST, o Representational State Transfer, es un estilo arquitectónico para diseñar servicios web que interactúan mediante el protocolo HTTP. Es uno de los enfoques más populares para construir APIs debido a su simplicidad, eficiencia y escalabilidad. Una API que sigue los principios REST es conocida como una API RESTful.
Características de una API REST
- Cliente-Servidor: REST sigue la arquitectura cliente-servidor, donde el cliente (por ejemplo, un navegador web o aplicación móvil) envía solicitudes, y el servidor responde con los datos solicitados. Esta separación permite que el cliente y el servidor evolucionen de manera independiente.
- Sin Estado (Stateless): Cada solicitud que el cliente envía al servidor debe contener toda la información necesaria para que el servidor la procese. Esto significa que el servidor no guarda ningún estado entre solicitudes; cada una es independiente.
- Uso de Métodos HTTP: Una API RESTful utiliza los métodos estándar de HTTP para interactuar con los recursos:
- GET: Obtener datos.
- POST: Crear nuevos datos.
- PUT/PATCH: Actualizar datos existentes.
- DELETE: Eliminar datos.
- Interfaz Uniforme: Los recursos en una API REST se identifican mediante una URL. Esto asegura que la interacción con los datos sea clara y coherente. Por ejemplo, una URL puede representar un recurso específico como un refrán en una base de datos.
- Representación de Recursos: Los datos solicitados o enviados a través de la API suelen estar representados en formato JSON (aunque también puede ser XML u otros formatos). JSON es el más común debido a su legibilidad y ligereza.
- Caché: Las respuestas de una API RESTful pueden ser almacenadas en caché, lo que mejora el rendimiento al evitar solicitudes redundantes al servidor.
Usando MVC: La base de datos de refranes y su estructura
El desarrollo de una API REST en PHP utilizando el patrón MVC (Modelo-Vista-Controlador) es una manera eficiente de organizar el código y gestionar la interacción entre la lógica de negocios y los datos. Hoy vamos a profundizar en un proyecto que implementa una API REST para gestionar refranes, explicando tanto el uso de MVC como la estructura de la base de datos que respalda la API.
Puedes explorar este proyecto en vivo en palentino.linkpc.net/public, donde se muestra la funcionalidad completa para obtener refranes a través de la API.
Por otro lado dejo el proyecto completo para que lo descarges o mejores en github. El proyecto tiene todos los archivos y la estructura de creación de la base de datos mariadb o mysql.
Para gestionar la base de datos uso el gestor Adminer. En un único archivo .php puedes gestionar toda la base de datos. Es espectacular como está programado, teneís que probarlo.
https://palentino.linkpc.net/public/adminer-4.8.1-mysql.php
¿Qué es MVC y cómo se aplica en esta API REST de refranes?
El patrón MVC divide la aplicación en tres componentes principales:
- Modelo (Model): Gestiona la interacción con la base de datos.
- Vista (View): En una API REST, la vista generalmente es una respuesta en formato JSON o XML.
- Controlador (Controller): Gestiona las solicitudes HTTP, interactúa con el modelo y genera las respuestas para el cliente.
En el caso de nuestra API REST de refranes, los controladores gestionan las solicitudes HTTP para obtener, crear o actualizar refranes, los modelos interactúan con la base de datos donde los refranes están almacenados, y la vista devuelve los resultados en formato JSON.
Explorando el proyecto: Estructura del código
El proyecto se organiza de acuerdo con el patrón MVC, siguiendo esta estructura de carpetas:
- app/controllers/RefranController.php: Controlador encargado de manejar las solicitudes relacionadas con los refranes.
- app/models/Refran.php: Modelo que define la lógica de acceso a la base de datos para los refranes.
- app/core/Database.php: Gestor de la conexión a la base de datos.
- public/index.php: Punto de entrada de la API, donde se enrutan las solicitudes al controlador adecuado.
Controlador: RefranController.php
El controlador recibe las solicitudes HTTP (como GET, POST, PUT y DELETE) y decide qué acción tomar. A continuación, interactúa con el modelo Refran para acceder a la base de datos y luego genera una respuesta en formato JSON.
Cuando desarrollas una API REST en PHP, como https://palentino.linkpc.net/public/, es fundamental contar con herramientas que te permitan probar los diferentes métodos HTTP como GET, POST, PUT, y DELETE. Estas herramientas te permiten enviar solicitudes a tu API y ver las respuestas, lo que te facilita el proceso de depuración y pruebas.
A continuación, te presento algunas de las mejores herramientas para probar tu API REST.
1. cURL (Línea de comandos)
cURL es una herramienta de línea de comandos que permite hacer solicitudes HTTP. Es ideal para pruebas rápidas desde la terminal y viene preinstalado en la mayoría de los sistemas operativos (Linux y macOS). En Windows, puedes instalarlo junto con Git Bash.
curl -X GET https://palentino.linkpc.net/public/
Para un POST
curl -X POST https://palentino.linkpc.net/public/ \
-H “Content-Type: application/json” \
-d ‘{“autor”: “Juan Pérez”, “fecha”: “2024-09-06”, “frase”: “Más vale tarde que nunca”, “usuario”: “juan123”, “ubicacion”: “España”, “idioma”: “español”, “tipo”: “proverbio”}’
2. Postman (Interfaz gráfica)
Postman es una de las herramientas más populares para probar APIs REST. Es ideal para quienes prefieren una interfaz gráfica, ya que permite enviar solicitudes HTTP configuradas de manera intuitiva. Es muy útil para pruebas con parámetros complejos, autenticación y diferentes métodos HTTP.
3. Insomnia (Interfaz gráfica)
Insomnia es otra herramienta gráfica para probar APIs REST. Es más ligera que Postman, pero igualmente poderosa. Insomnia es perfecta para desarrolladores que buscan simplicidad y velocidad al realizar pruebas de API.
4. Advanced REST Client (ARC) (Interfaz gráfica)
Advanced REST Client (ARC) es una extensión del navegador o aplicación de escritorio que te permite probar APIs REST. Es una herramienta muy intuitiva y ligera que te permite enviar solicitudes HTTP de manera rápida.