©2023 Escuela Tecnologías de la Información S.L. Todos los derechos reservados.
Curso de Desarrollo de API RESTful con Laravel
Aprende a crear una completa API RESTful con las funcionalidades más avanzadas en el framework PHP Laravel
Material disponible
En este curso los estudiantes aprenderán a construir una completa API RESTful con el lenguaje PHP y el framework Laravel 5.5. Se abordarán todas las técnicas básicas y avanzadas para la construcción de servicios web totalmente profesionales, con autenticación del lado del servidor por medio de OAuth2, acceso CORS, navegación entre recursos con HATEOAS y muchas cosas más.
Qué aprenderé en el Curso de Desarrollo de API RESTful con Laravel
En líneas generales, una API RESTful es una interfaz de acceso a datos de un servidor por medio de HTTP, en la que se obtiene como respuesta la información generalmente en formato JSON. Las APIs RESTful tienen la particularidad de no mantener estado de la aplicación, lo que facilita asuntos tan importantes como la escalabilidad y siguen el estandard REST para su implementación y funcionamiento
Hoy casi cualquier proyecto mediano o grande dispone de una API mediante la cual se ofrece información a todo tipo de clientes. Como la comunicación se realiza mediante HTTP, casi cualquier sistema es capaz de conectarse con el API y usarla para consumir sus recursos, sin importar el sistema o lenguaje de programación usado.
Existen muchos motivos por los que implementar un proyecto backend con base en una API RESTful. El más importante es la completa separación entre backend y frontend, lo que permite desarrollar un proyecto de una complejidad media o alta con dos arquitecturas completamente separadas. Con ello se consigue no solo un producto de más fácil mantenimiento, sino también la posibilidad de crear diferentes sistemas (clientes) que consumen un mismo backend (la API). Es decir, permite desarrollar un único backend, basado en una API, para dar soporte a una aplicación web, una aplicación para móviles iOS / Android, aplicación de escritorio y cualquier otro producto que más adelante se pretenda incorporar.
Existen muchas formas de construir una simple API o servicio web, pero en este curso, vas a crear una verdadera API RESTful, lo cual te permitirá seguir las mejores prácticas y así tener un sistema altamente escalable y mantenible.
Objetivos del curso
Este curso tiene un componente mayormente práctico. A lo largo de las distintas sesiones se irá desarrollando un proyecto de API RESTful, comenzando por el entorno de trabajo y la instalación de Laravel, los componentes más sencillos del servicio web y luego los recursos más complejos. En las últimas sesiones se implementará la capa de seguridad, para controlar el acceso a los diferentes recursos usando OAuth2.
A continuación resumimos las sesiones que se ofrecen en este curso, junto con los contenidos que se van a impartir en cada una de ellas.
-
Preparación del Proyecto
Se introducirán y crearán los componentes necesarios para la estructura inicial del proyecto (modelos, controladores, rutas, migraciones y factories) y se implementarán los modelos de la API (atributos y relaciones). -
Implementación de los Componentes Restantes de la API RESTful
Se implementarán componentes restantes como migraciones y factories para poblar la base de datos de forma automatizada, junto con un controlador Inicial de operaciones sobre el recurso User. -
Generalizando el Código y Mejorando el Funcionamiento de la API
Se implementarán algunas funciones sobre los nuevos recursos del API REST. Se refactorizará el código anterior para centralizar la construcción de las respuestas en un mismo componente reutilizable (trait). Además se explicará el el manejo de los diferentes errores y excepciones. -
Comenzando operaciones complejas de la API RESTful
Se implementarán las operaciones requeridas, junto con sus respectivas rutas, para nuevos recursos fundamentales de la API RESTful, junto con algunas operaciones complejas, las cuales incluyen más de un recurso por operación. -
Finalizando las Operaciones Complejas
Se terminarán de implementar las operaciones complejas, incluyendo la funcionalidad principal que es la creación de transacciones (venta de productos) mediante el API. -
Agregando Nuevas Características a la API y Transformando las Respuestas para Aumentar la Compatibilidad
Se agregarán algunas características de ayuda para el manejo de productos en la API, junto con la implementación de un sistema de transformación de las respuestas, que permitirá eliminar la dependencia entre la estructura de las respuestas y la base de datos. -
Implementando HATEOAS en la API
Abordaremos HATEOAS, una pieza fundamental para cualquier API que se haga llamar RESTful. Por medio de HATEOAS, se facilita la “navegación” entre recursos y el acceso a los mismos. -
Implementando la capa de seguridad usando OAuth2
En esta clase, haremos uso de Laravel Passport para implementar todo un sistema de seguridad y control de acceso a la API por medio de OAuth2. -
Usando los diferentes flujos de acceso de OAuth2 y soportando CORS en la API
En esta clase usaremos los principales flujos de acceso que nos permite la API por medio de OAuth2, para proteger el acceso a la API en diferentes niveles, adicionalmente agregaremos acceso a CORS, para facilitar el consumo de la API desde navegadores.
Por qué debes aprender Desarrollo de API RESTful con Laravel
Laravel es uno de los frameworks PHP más populares. Ha conseguido una gran comunidad de usuarios en poco tiempo, colocándose a la cabeza de los frameworks más usados y de los proyectos Open Source con mayor avance. Eso es resultado de la cantidad de ayudas y guías de diseño de software que facilitan el desarrollo de proyectos de todo tipo.
Laravel permite desarrollar cualquier tipo de sitio web, basado en contenido, así como servicios web como podrían ser las APIs RESTful. Ofrece una base de código sólida y patrones de diseño consolidados en la industria, para desarrollar más rápido y crear proyectos más fácilmente mantenibles. A la vez, consigue mantener una experiencia de trabajo sencilla y amigable para el desarrollador.
La nueva versión del framework, Laravel 5.5, se ofrece con nuevas características que facilitan aún más el desarrollo de proyectos de API REST, que ayudan a reducir las tareas repetitivas y escribir menor cantidad de código.
Crear entornos de trabajo para empezar a desarrollar con Laravel está al alcance de cualquier desarrollador, de modo que es fácil comenzar a desarrollar. Cuando el proyecto está finalizado, llevar a producción aplicaciones en Laravel es sencillo, ya el lenguaje PHP dispone de soporte altamente extendido y los requisitos del framework son bastante sencillos de disponer.
Qué tengo que saber
Este curso está dirigido a desarrolladores de PHP experimentados, que ya tengan una base de conocimiento sólida en el lenguaje. No es absolutamente necesario haber trabajado anteriormente con Laravel, dado que vamos a explicar desde cero el setup del entorno de trabajo y se explicarán también las bases del framework necesarias para el desarrollo de la API: sistema de routing, controladores, modelos, etc.
Sin embargo, debe quedar claro que no es un curso de Laravel desde cero, en el que se vean todas las características del framework. Nos vamos a centrar exclusivamente en aquellas partes que se necesita utilizar para el desarrollo de una API RESTful con Laravel 5.5. Asimismo, los conceptos iniciales y básicos del framework se explicarán brevemente, sin entrar tanto en detalle.
En resumen, un desarrollador con conocimientos en cualquier otro framework PHP será capaz de asimilar perfectamente el curso, y por supuesto cualquier persona que conozca Laravel previamente. En el caso de no haber trabajado con ningún framework PHP anteriormente, se recomienda tener bastante experiencia con PHP y quizás aclarar conceptos y prácticas mediante el Curso de Laravel desde cero que hemos impartido anteriormente en EscuelaIT.
Clases y contenidos
Introducción y Preparación del Proyecto
- Que son las API REST, o API RESTful. Qué son recursos y qué qué tipo de operaciones se realizan sobre los recursos mediante las API RESTful.
- Algunos detalles sobre los elementos de las aplicaciones Laravel que se necesitarán construir para crear un API RESFTful con este framework.
- Cómo crear un proyecto en Laravel.
- Qué requisitos se necesitan y qué pasos se realizan para iniciar nuestro proyecto de API RESTful.
- Homestead.
- Cómo usar un servidor web en local, levantado por el propio PHP, para usar Laravel.
- Cómo configurar una base de datos en local, con SQLite, para poder trabajar de una manera cómoda y sin necesidad de instalar un sistema gestor de base de datos.
- Migraciones de un proyecto, cómo se ejecutan y la necesidad de tener una base de datos para poder realizar el proceso de creación de la estructura de la base de datos.
- Qué hay que hacer en la aplicación Laravel para configurar la base de datos creada.
- Qué otras alternativas disponemos para instalar Laravel en local, incluso para instalar PHP de una manera cómoda.
- Motivos por los que podemos usar una u otra, dependiendo de si tenemos problemas específicos o necesidades concretas.
- Carpetas y archivos que forman parte de un proyecto de Laravel.
- Middlewares, controladores, modelos, rutas, archivos de configuración, kernel, etc.
- Cómo en un proyecto pueden convivir partes de una web tradicional, a la que el servidor responderá con HTML y partes de lo que será nuestra API.
- Comenzamos a incorporar código al proyecto para ir construyendo el API del proyecto del curso.
- Estructura del modelo de datos que se va a utilizar para el proyecto, analizando las diversas partes, sus recursos.
- Implementación de los recursos restantes para el proyecto del API RESTful.
- Cómo se realiza una migración para crear la tabla pivote, necesaria para una relación de muchos a muchos.
- Cómo se ejecutan las migraciones, una vez realizadas todas las necesarias para la implementación de las tablas para nuestro modelo de datos.
- Trucos que resuelven problemas habituales.
- Resumen de todo el contenido que se impartirá en el resto del curso de creación de API RESTful con Laravel.
Implementación de los Componentes Restantes de la API RESTful
Creamos los modelos de Seller y Buyer con la base del modelo User. Son modelos que no tienen todos los componentes que se necesitan para modelos normales y que toman muchas cosas simplemente extendiendo de un modelo padre.
Se explican algunas de las propiedades que Laravel ofrece para configurar los modelos de nuestros recursos. Se implementan algunas modificaciones en nuestros modelos para adaptarlos a nuestra estructura de datos de aplicación.
Se explica cómo configurar las migraciones, creando todas las columnas de las tablas para nuestro modelo de datos. Las migraciones ya estaban realizadas en la clase pasada, pero estaban vacías prácticamente de código. Ahora creamos los campos de las tablas usando código en las migraciones.
Creación del código para generar los datos para los modelos, datos de prueba que se puedan usar para poblar la base de datos en la etapa de desarrollo. Esto se hace usando la librería Faker, integrada en el propio Laravel. Se muestra el proceso detallado de implementación de las factory para la creación de los datos de prueba.
En este vídeo se muestra cómo especificar las relaciones entre las tablas del modelo de datos, lo que se hace sobre los modelos de Laravel. Es un paso necesario para que desde unos modelos podamos acceder a los datos relacionados, que dependen de otros modelos.
Vamos a invocar todas las factories generadas anteriormente, con lo que se crearán los datos en las tablas, para tener contenido con el que ir desarrollando en el futuro. En este paso usamos un archivo específico, databaseSeeder.php, para implementar la alimentación de datos de pruebas. Luego, el paso de rellenar los datos, ejecutando el archivo databaseSeeder.php, se hace desde Laravel Artisan.
En este bloque se respondió una pregunta que trataba sobre el versionado de las API: qué hacer cuando se tiene que modificar el API, creando nuevas versiones que tengan funcionamientos diferentes y cómo lidiar con clientes que consuman diferentes versiones del API.
- Laravel Tinker, qué es, para qué sirve, cómo usarlo a través de la línea de comandos para ejecutar directamente código del framework sin tener que crear rutas o controladores para conseguirlo.
Se acaba la clase repasando un par de preguntas finales, para resolver dudas básicamente, sin aportar nuevo contenido a lo que se ha visto ya en el resto de la clase.
Generalizando el Código y Mejorando el Funcionamiento de la API
En esta clase implementarán algunas funciones sobre los nuevos recursos del API REST. Se refactorizará el código anterior para centralizar la construcción de las respuestas en un mismo componente reutilizable (trait). Además se explicará el el manejo de los diferentes errores y excepciones.
Comenzando Operaciones Complejas de la API RESTful
Durante esta clase se implementarán las operaciones requeridas, junto con sus respectivas rutas, para nuevos recursos fundamentales de la API RESTful, junto con algunas operaciones complejas, las cuales incluyen más de un recurso por operación.
Finalizando las Operaciones Complejas
Comienza la clase 5 con un repaso de los objetivos que se plantean en esta ocasión. Básicamente seguir trabajando una serie de controladores complejos para llegar a crear productos y transacciones en este sistema de API para comercio online.
Desarrollo de CategoryTransactionController. Se encarga de ofrecer el listado de transacciones en una categoría.
Muestra los compradores de una categoría, quienes han comprado en una categoría dada. En este caso se hace una transformación severa de la colección, ya que lo que se obtiene en principio tiene muchas relaciones en la misma consulta y tenemos que devolver solamente compradores
- CategoryProductController.
- CategorySellerController.
- Detalles de la tabla pivote, ya que no deberíamos devolver esos detalles en la respuesta.
- Cómo enviar parámetros adicionales a un controlador para indicarle cómo ordenar los datos de la respuesta.
- SellerTransactionController.
- SellerCategoryController.
SellerBuyerController.
En este vídeo se realiza el controlador SellerProductController, el cual es muy interesante por tener diversas operaciones que nos restaban por hacer en nuestro API, como crear productos asociados a un comprador, editarlo, eliminarlo y por supuesto mostrarlo.
Método store() del controlador SellerProductController.
- Operaciones dentro de SellerProductController.
- método update()
- método destroy().
- Operaciones adicionales de nuestro API.
- Ejemplo en el método destroy() de ProductCategoryController .
Última operación en la que vamos a realizar las transacciones en si. En este controlador necesitamos usar tres recursos (es el primero que hacemos que requiere el uso de tres recursos y el único que necesitaremos en nuestro proyecto).
Agregando Nuevas Características a la API y Transformando las Respuestas para Aumentar la Compatibilidad
Características de ayuda para el manejo de productos en la API, junto con la implementación de un sistema de transformación de las respuestas, que permitirá eliminar la dependencia entre la estructura de las respuestas y la base de datos.
Implementando HATEOAS en la API
HATEOAS, una pieza fundamental para cualquier API que se haga llamar RESTful.
Implementando la capa de seguridad usando OAuth2
Laravel Passport para implementar todo un sistema de seguridad y control de acceso a la API por medio de OAuth2.
Usando los diferentes flujos de acceso de OAuth2 y soportando CORS en la API
- Flujos de acceso que nos permite la API por medio de OAuth2, para proteger el acceso a la API en diferentes niveles.
- Acceso a CORS, para facilitar el consumo de la API desde navegadores.
Valoraciones
Elvis
Daniel Ignacio Fernández
Javier Gutierrez
Juan Esteban Quiroz
Excelente Profesor
David Alonso
Excelente curso y profesor.
Matias Potes
Me fue de mucha utilidad, recomiendo al profesor
Jorge Ferreyra
Alvaro Landa Hidalgo
Buen profesor y buenas explicaciones
Miguel Maluenda
Enrique Arrabal Almagro
Muy bien explicado, detalles que normalmente en tutoriales pasan por alto los va comentando. Viniendo de Symfony es muy buen curso para ponerte al día rápido de Laravel
Jose Luis Pilo
Diego Oliva
Hector Enrique Rojas Cano
Contenido muy completo, la pedagogía y claridad con la que explica Juan es excelente. 100% recomendado.
¿Conoces nuestra tarifa plana?
Toda la formación de EscuelaIT, con más de 190 cursos completos para aprender las más variadas tecnologías de programación, diseño y marketing online. Todo! con tu suscripción.