InicioFramework PHPCómo Construir una API RESTful con Yii2 Advanced Template

Cómo Construir una API RESTful con Yii2 Advanced Template

Esta guía integral describe los pasos prácticos para construir una API RESTful utilizando la plantilla Yii2 Advanced. Aprenderás la configuración de endpoints, la creación de controladores y métodos de prueba de API para exponer datos. Este tutorial está diseñado para desarrolladores que buscan implementar una arquitectura REST moderna y escalable.

Una Interfaz de Programación de Aplicaciones (API) es una interfaz de software que facilita la integración y el intercambio de datos entre aplicaciones. Una API RESTful es una implementación de API que se adhiere a los principios de la arquitectura REST (Transferencia de Estado Representacional). Esta arquitectura utiliza el protocolo HTTP estándar para la comunicación, lo que la convierte en una solución performante, escalable y fácil de desarrollar.

Construir una API RESTful en Yii2 puede hacerse de manera eficiente. El framework proporciona una base MVC robusta y soporte integrado para el desarrollo REST. Este artículo te guiará en la creación de un endpoint de API separado, distinto de la lógica típica de frontend y backend.

Utilizaremos un caso de estudio de exposición de datos desde una tabla user. La suposición básica es que has instalado exitosamente la plantilla Yii2 Advanced. Si no, puedes consultar la documentación oficial de Yii Framework para la guía de instalación.

Pasos para Implementar una API RESTful en Yii2

El proceso de implementación consta de tres etapas principales: preparación del endpoint, configuración de la aplicación y pruebas. Analicemos cada etapa en detalle.

1. Crear la Estructura de Directorios de la API

El primer paso es crear un entorno de trabajo dedicado para la API. En la plantilla Yii2 Advanced, crearemos un nuevo directorio de aplicación llamado api.

  1. Copia todo el contenido del directorio backend en la misma ubicación, luego renombra la copia a api.
  2. Abre el archivo common/config/bootstrap.php. Añade un alias para el directorio api agregando la siguiente línea:
    Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
  3. Dentro del directorio environments, copia la carpeta backend tanto en dev como en prod. Renombra cada copia a api.
  4. Edita el archivo environments/index.php. Añade las rutas de configuración para el directorio api en las secciones setWritable y setCookieValidationKey.
  5. Utiliza la función «Buscar y Reemplazar» en tu editor de código. Reemplaza todas las ocurrencias de la cadena backend con api en todos los archivos dentro de la carpeta api recién creada.
Crear un directorio api a partir de una copia de backend en Yii2
Figura 1: El proceso de duplicar el directorio backend en api.

2. Configurar el Controlador y las Reglas de URL

Una vez que la estructura esté lista, el siguiente paso es configurar el controlador que manejará las solicitudes de la API.

  1. Crear el Controlador de la API. Crea un nuevo archivo llamado UserController.php dentro del directorio api/controllers. Complétalo con el siguiente código:
    <?php
    namespace api\controllers;
    use yii\rest\ActiveController;
    
    class UserController extends ActiveController
    {
        public $modelClass = 'common\models\User';
    }
    Este controlador hereda de ActiveController, que proporciona automáticamente endpoints RESTful completos (GET, POST, PUT, DELETE) para el modelo User.
  2. Configurar el Administrador de URL. Abre el archivo api/config/main.php. Añade o modifica los componentes request y urlManager dentro del array components:
    'components' => [
        'request' => [
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ]
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
            ],
        ],
    ],
    Esta configuración habilita el análisis de entrada JSON y define reglas de enrutamiento para el controlador User.
  3. Configurar el Servidor Web (Opcional). Para servidores Apache, crea un archivo .htaccess dentro de la carpeta api/web con el siguiente contenido:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
    Este archivo dirige todas las solicitudes al archivo principal index.php de Yii2.

3. Probar los Endpoints de la API

Una vez completada la configuración, puedes probar los endpoints de la API creados. Aquí hay algunos métodos de prueba comúnmente utilizados.

  1. Usando Postman. Descarga e instala Postman. Crea una nueva solicitud usando el método GET y la URL: http://localhost/[nombre-de-tu-proyecto]/api/web/users. Si es exitoso, recibirás una respuesta JSON que contiene datos de usuario.
  2. Usando cURL. Ejecuta el siguiente comando en una terminal o prompt de comandos:
    curl -H "Accept: application/json" "http://localhost/[nombre-de-tu-proyecto]/api/web/users"
  3. Acceso a través del Navegador. Abre la URL del endpoint en un navegador. Sin embargo, este método suele ser adecuado solo para pruebas simples de solicitudes GET.
Resultado de prueba de API RESTful Yii2 en Postman
Figura 2: Resultado de la prueba para el endpoint GET /users usando Postman.

Al completar todos los pasos anteriores, has construido exitosamente una API RESTful básica en Yii2. Para un desarrollo posterior, considera añadir mecanismos de autenticación (como JWT), autorización, limitación de velocidad y una buena documentación de la API. Consulta siempre la documentación oficial de Yii2 para asegurar que tu implementación siga las mejores prácticas actuales.

Artículos Recientes