Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

Programando Con Yii2: Construyendo una API RESTful

by
Difficulty:IntermediateLength:ShortLanguages:
This post is part of a series called How to Program With Yii2.
How to Program With Yii2: Running Cron Services
Programming With Yii2: Building Community With Voting, Comments, and Sharing

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

Final product image
What You'll Be Creating

En esta serie Programando Con Yii2, estoy guiando a los lectores en el uso del Framework Yii2 para PHP. Podrías también estar interesado en mi Introducción al Framework Yii, que revisa los beneficios de Yii e incluye una vista general de las novedades en Yii 2.x.

En el tutorial de hoy, revisaré cómo construir una API REST en Yii para conectar tu aplicación a la nube, aplicaciones móviles, y otros servicios. Te guiaré a través de la guía de inicio rápido API REST y proporcionaré contexto y ejemplos de peticiones comunes.

Comenzando Con APIs REST Yii

Construir APIs REST en Yii es de hecho bastante sencillo. Puedes aprovechar el framework MVC existente, pero estás creando un punto de acceso distinto al que pretendes que sea accedido por diferentes tipos de servicios (no visitantes de sitio web).

Los Beneficios del Framework Yii REST

El Framework Yii proporciona soporte amplio y detallada documentación para construir APIs. Aquí hay algunas de las capacidades integradas cuando se construyen APIs:

  • Prototitpado rápido con soporte para APIs comunes para Active Record. Esto te permite exponer rápida y fácilmente funcionalidad de modelo de datos CRUD vía una API.
  • Respuesta formato negociación (soportando JSON y XML por defecto). Hay soporte integrado para devolver información en formatos comunes de salida.
  • Serialización personalizada de objeto con soporte para campos seleccionables de salida. Es sencillo modificar qué datos son devueltos.
  • Formato apropiado de colección de datos y validación de errores.
  • Soporte para Hypermedia Como El Motor de Estado de Aplicación (HATEOAS)
  • Ruteo eficiente con revisión apropiada de verbo HTTP.
  • Soporte integrado para los verbos OPTIONS y HEAD.
  • Autenticación y autorización.
  • Cacheo de datos y cacheo HTTP.
  • Limitación de tasa.

No tendré oportunidad de tocar todo esto el día de hoy.

Mi Interés en APIs REST

En este episodio, construiré una API para permitirnos manipular la tabla Item que creé en el servicio Twixxr desde este tutorial Twitter API. Pero también estoy planeando construir una API para nuestro enfoque de serie de tutoriales startup, Meeting Planner. Una API segura será necesaria para construir una aplicación iOS para el servicio. La API habilitará comunicación entre la aplicación móvil y el servicio en la nube.

Construyendo el Controlador REST

Con el framework REST de Yii, crearemos un punto final para nuestra API y organizaremos controladores para cada tipo de recurso.

Los recursos son esencialmente los modelos de datos de nuestra aplicación. Estos extienden a yii/base/Model.

La clase yii\rest\UrlRule proporciona mapear por ruteo nuestro modelo de datos para puntos finales CRUD API:

Programming Yii2 REST API UrlRule Documentation of CRUD API endpoints

Creando un Árbol para Actuar como una API Endpoint

En la plantilla Avanzada Yii2, hay un árbol front-end y back-end, y este es extensible. Para separar las características API, crearemos un tercer árbol para actuar únicamente como un punto final API.

El desarrollador Alex Makarov proporciona esta útil guía para crear árboles adicionales que seguí para crear mi tercer árbol:

Después, usé el editor Atom para hacer una búsqueda global y reemplazar "backend" con "api" en el nuevo árbol api.

Y agregué el alias de api a /common/config/bootstrap.php:

Configurando el ruteo de URL para Peticiones Entrantes

En /api/config/main.php, necesitamos agregar el request[] para configurar análisis JSON y UrlRule para asociar métodos para los modelos y sus puntos finales.

Eso es básicamente lo que toma habilitar algo de funcionalidad API rica para estos modelos.

Ejemplos Con cURL

Comencemos a hacer peticiones.

Pidiendo OPTIONS

Muéstrame métodos API disponibles:

Aquí está la respuesta (GET, POST, HEAD, OPTIONS):

Peticiones GET

Petición: ¿Cuántos datos hay ahí?

Respuesta: 576 registros a lo largo de 29 páginas...

Petición: Muéstrame el registro 15:

Respuesta:

Petición: Muéstrame todos los datos en la página 3:

Respuesta:

Peticiones DELETE

Aquí está un ejemplo de una petición GET seguida por una petición DELETE y después un seguimiento fallido de intento GET: 

Las peticiones para un registro borrado devuelven un error 404.

Peticiones POST

Para mis peticiones post, cambié a la app de Chrome Postman:

Programming With Yii2 Chrome Directory Postman Extension Landing Page

Registrarse para Postman fue sencillo:

Programming With Yii2 Postmand Sign Up

Y después pude enviar peticiones a mi API localhost en una GUI más amigable:

Programming With Yii2 POST Request Shown in Postman UX

Después, recuperé los datos vía curl, record 577:

Postman resultó esencial para redondear mis pruebas ya que la linea de comando curl no es sencilla de configurar para envíos POST.

Mirando Hacia Adelante

En adición a su resumen de inicio rápido REST, la documentación Yii 2.0 proporciona detalle en un arreglo de otros aspectos de creación de API:

Espero tener la oportunidad de explorar más de estos en futuros episodios. Pero ciertamente, uno de los siguientes pasos es crear una API para Meeting Planner en la serie startup.

En conclusión, construir una API REST básica con el framework MVC Yii es bastante simple. El equipo de Yii ha hecho un gran trabajo estandarizando funcionalidad para un requerimiento muy importante, APIs REST. Espero que hayas disfrutado aprender sobre ellas.

Si tienes cualquier pregunta o sugerencia, por favor publícalas en los comentarios. Si quisieras seguir a la par con mis tutoriales Envato Tuts+ futuros y otras series, por favor visita mi página de instructor o sígueme @reifman. Definitivamente revisa mi serie startup y Meeting Planner.

Enlaces Relacionados

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.