[Yii2] Crear una API RESTful

Una API es un software que integra las aplicaciones que creamos con otras aplicaciones. El objetivo de su creación es compartir datos entre las aplicaciones que se han integrado.

La API RESTful/REST API es la aplicación de la API(Application Programming Interface). REST(Representational State Transfer)es una arquitectura de métodos de comunicación que utiliza el protocolo HTTP para el intercambio de datos donde este método se aplica a menudo en el desarrollo de aplicaciones. Con el objetivo de que el sistema tenga un buen rendimiento, sea rápido y fácil de desarrollar (escalar) especialmente en el intercambio y comunicación de datos.

Construir una API REST en Yii es en realidad bastante fácil. Puedes aprovechar el framework MVC existente, pero creas diferentes puntos de acceso a los que quieres que accedan diferentes tipos de servicios (no visitantes del sitio web).

Aquí, usamos un ejemplo para ilustrar cómo puedes construir un conjunto de APIs RESTful con poco esfuerzo de codificación. El Yii que usaremos es la plantilla avanzada yii2.

Supongamos que desea exponer los datos de usuario a través de API RESTful. La tabla de usuarios de este ejemplo la creaste cuando instalaste Yii por primera vez. Para saber como instalar Yii puedes ver en Como Instalar Yii2 Avanzado via Composer.

Pasos para Crear una API RESTful en Yii2 Avanzado

A. Crear API de punto final

En laplantilla Yii2 Advanced tenemos un directorio backend y otro frontend. Para separar las características de la API, crearemos un nuevo directorio llamado «API» como punto final.

  1. Copia el directorio backend y renómbralo a «api».
yii2 api 01
  1. Edita el archivo«common/config/bootstrap.php» y añade un alias para «api».
<?php
Yii::setAlias('@common', dirname(__DIR__));
Yii::setAlias('@frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('@backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console');
  1. En el directorio «environments/dev», copia el directorio backend y renómbralo a «api». Del mismo modo para el directorio «environments / prod», por lo que se verá como la siguiente imagen
yii2 api 02
  1. Ajuste el archivo «environments/index.php» de la siguiente manera
return [
    'Development' = > [
        'path' = > 'dev',
        'setWritable' = > [
            ..........,
            'api/runtime',
            'api/web/assets',
        ],
		..............
        'setCookieValidationKey' = > [
            ..........,
            'api/config/main-local.php',
        ],
    ],
    'Production' = > [
        'path' = > 'prod',
        'setWritable' = > [
			..........,
            'api/runtime',
            'api/web/assets',
        ],
		.............
		'setCookieValidationKey' = > [
			..........,
            'api/config/main-local.php',
        ],
    ],
];
  1. En el directorio api que creamos antes, cambia todas las palabras «backend» por «api»
yii2 api 03

B. Configuración de Yii

  1. Crear un controlador

Crea un«UserController» archivo en el directorio «api/controllers» y copia los siguientes scripts

<?php
namespace apicontrollers;
use yii\rest\ActiveController;
 
class UserController extends ActiveController
{
    public $modelClass = 'common\models\User';
}
  1. Configuración de REGLAS Y URL de entrada JSON

Cambia el archivo «api/config/main.php» añadiendo la petición JSON y la regla URL como sigue:

return [
    .........
    'components' => [
        'request' => [
            'parsers' => [
                'application/json' => 'yiiwebJsonParser',
            ]
        ],
        .........
        'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
            ],
        ]
        ............
    ],
    ............
];
  1. Cree un archivo «.htaccess» en el directorio «api/web/» y copie el siguiente código
	RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php

C. Pruebas API

  1. Descargue Postman,y, a continuación, abra Postman. Haga una petición a la URL «http://localhost/yii2-advanced/api/web/users».
yii2 api 04
  1. O con el comando CURL
yii2 api 05
  1. También puede acceder a través de un navegador con la URL «»http://localhost/yii2-advanced/api/web/users»».
yii2 api 06

Artículos más recientes