Guía definitiva para crear APIs con Symfony 5 y API Platform

Creación de una API con Symfony y API Platform. Estructura de servicios, RabbitMQ, Docker y mucho más!

Ratings 3.82 / 5.00
Guía definitiva para crear APIs con Symfony 5 y API Platform

What You Will Learn!

  • Crear APIs con Symfony 5 y API Platform.
  • Comunicación entre servicios con RabbitMQ
  • Creación de entornos de desarrollo con Docker en Linux, Mac y Windows
  • Aprender patrones de diseño y arquitecturas de software para desarrollar aplicaciones fáciles de mantener
  • Aprender a usar Xdebug para detectar y corregir errores de forma eficiente
  • Crear tests funcionales
  • Crear tests unitarios
  • Autenticación OAuth (Facebook login)

Description

En este curso aprenderás no solo a crear una API con Symfony 5 y API Platform usando PHP 7.4, sino que aprenderás a explotar las herramientas disponibles para desarrollar tus aplicaciones tales como: Docker, PHPStorm, Xebug RabbitMQ y muchas más.

El proyecto estará estructurado en 3 servicios:

- Una API para gestionar movimientos de contabilidad

- Un servicio de RabbitMQ para procesar mensajes

- Un servicio de mailing que leerá mensajes de RabbitMQ y enviará emails a los usuarios

Aprenderás a leer código de librerías de terceros y a crear patrones de diseño y arquitecturas escalables y fáciles de mantener.

También aprenderás a cubir todos los casos de uso de tus aplicaciones tanto con tests funcionales como unitarios.

Al terminar este curso, serás capaz de crear APIs robustas que te ayudarán a conseguir más logros en tu carrera profesional :) 

Tabla de contenidos

  1. Introducción al curso

  2. Requisitos básicos para este curso

    1. Requisitos del sistema

    2. Configurando WSL 2 en Windows 10

  3. Entorno de Docker

    1. Archivos y carpetas para el entorno

    2. Configuración de Nginx

    3. Configuración de PHP

    4. Configuración de Docker Compose

    5. Makefile

    6. Archivos y carpetas para RabbitMQ

    7. Configurar entorno de docker para RabbitMQ

  4. Repositorio Remoto

    1. Enlace al repositorio con el código del curso por secciones

  5. Creación de proyecto Symfony

  6. Instalación de librerías adicionales

    1. Librerías necesarias para el proyecto

    2. Configuración básica de API Platform

  7. Registro de usuarios

    1. Librerías necesarias y entidad User

    2. Mapeo de la entidad User

    3. Creando BaseRepository

    4. Creando UserRepository

    5. Listener para capturar excepciones

    6. Migración para crear tabla user

    7. Instalar y configurar librería para generar JSON Web Tokens (JWT)

    8. Preparando servicio y controller

    9. Actualizando API Platform (swagger)

    10. Creando EncoderService

    11. Creando RequestService

    12. Actualizando security.yaml

    13. Completando la lógica del servicio

  8. Servicio de Mailer

    1. Creando estructura de archivos

    2. Creando proyecto Symfony y cambiando namespace

    3. Instalar dependencias necesarias

    4. Cómo funciona RabbitMQ?

    5. Instalar Messenger component y crear clase para el mensaje

    6. Configurar Messenger en la API

    7. Enviando nuestro primer mensaje a RabbitMQ

    8. Configurar Messenger component en Mailer

    9. Instalar MailCatcher y TwigBundle

    10. Crear servicio, clase para rutas y plantillas

    11. Añadir lógica a MailerService

    12. Consumiendo nuestro primer mensaje de RabbitMQ

  9. Acción para reenviar email de activación de cuenta

    1. Crear estructura de archivos y actualizar API Platform

    2. Lógica para enviar email de activación de cuenta

  10. Acción para activar cuenta de usuario

  11. Acción para acceder (Login)

    1. Configurando el Firewall

    2. UserProvider y actualización de security.yaml

    3. Actualizar endpoint para login

    4. Añadir o quitar información del token

  12. Acción para restablecer contraseña

    1. Explicación del proceso

    2. Crear archivos necesarios y actualizar API Platform

    3. Crear mensaje y actualizar configuración de Messenger

    4. Añadiendo lógica al servicio y probando el envío

    5. Creando mensaje y actualizando configuración en Mailer

    6. Creando plantilla y actualizando servicio de Mailer

    7. Consumiendo mensajes y comprobando errores

  13. Acción para restablecer contraseña

    1. Crear estructura de archivos

    2. Añadir lógica en el servicio

  14. Acción para cambiar la contraseña

    1. Crear archivos y actualizar API Platform

    2. Añadir lógica y probar el endpoint

    3. Usando Argument Resolver para inyectar al usuario autenticado

  15. Refactorizando controladores y desacoplándolos de los servicios

  16. Test funcionales y unitarios de todos los endpoints creados.

    1. Instalando dependencias y configurando el proyecto

    2. Creando Fixtures para User

    3. Creando base de datos de testing

    4. Creando la clase TestBase para tests funcionales

    5. Test para la acción de login

    6. Test para la acción de registro

    7. Test para la acción de pedir restablecimiento de contraseña

    8. Test para acción de restablecer contraseña

    9. Test para acción de reenviar email de activación

    10. Test para acción de cambiar contraseña

    11. Creando UserServiceTestBase para tests unitarios

    12. Test para el servicio de activación de cuenta

    13. Test para el servicio de registro de usuarios

    14. Test para el servicio de solicitud de restablecimiento de contraseña

    15. Test para el servicio de reenvío de email de activación

    16. Test para el servicio de resetear contraseña

    17. Test para el servicio de cambiar contraseña

  17. Acción para subir avatar de usuario

    1. Crear estructura de carpetas y actualizar API Platform

    2. Optimizar Swagger e instalar dependencias necesarias

    3. Crear Space en Digital Ocean y añadir variables en nuestra aplicación

    4. Configurar nuestra API para subir archivos a la nube

    5. Añadiendo lógica de servicios y probando

    6. Test unitario para FileService

    7. Test unitario y funcional para acción de subir avatar

  18. OAuth (Facebook Login)

    1. Instalando dependencias y creando App en Facebook

    2. Actualizando configuración y usando Adapter Pattern para cliente HTTP

    3. Crear ficheros necesarios y actualizar API Platform

    4. Añadir lógica a los servicios

    5. Probando y explicando el proceso entero.

  19. Configurando endpoints para usuario

    1. Crear voter para User

    2. Actualizando API Platform

    3. Tests funcionales para los endpoints

  20. Grupos de usuarios

    1. Crear entidad y actualizar relación con User

    2. Mapeo de la entidad

    3. Migración para crear la tabla user_group

    4. Actualizando API Platform

    5. Creando voter para Group

    6. Extensiones de Doctrine para controlar la seguridad de subrecursos

    7. Actualizando Fixtures y testeando endpoint para obtener grupos de usuarios

    8. TestBase para grupo y testeando endpoint para obtener grupos

    9. Test del endpoint para actualizar grupos

    10. Test del endpoint para eliminar grupos

    11. Test del endpoint para obtener usuarios de un grupo

  21. Gestión de grupos

    1. Crear entidad para solicitudes

    2. Mapeo de la entidad para solicitudes

    3. Crear migración

    4. Crear repositorio

    5. Crear clase para mensaje de RabbitMQ y actualizando configuración

    6. Creando excepciones y añadiendo lógica al servicio

    7. Actualizar API Platform y probar envío de solicitud

    8. Crear mensaje y configuración en Mailer

    9. Crear plantilla y actualizar MailerService

    10. Creando Handler para procesar mensajes y probar

    11. Creando ficheros y configuración para endpoint de aceptar solicitudes

    12. Refactorizando BaseRepository y añadiendo lógica al servicio

    13. Testeando la acción de aceptar solicitudes

    14. Crear archivos para endpoint para eliminar usuarios de un grupo

    15. Creando excepciones y añadiendo lógica al servicio

    16. Testing de la acción para eliminar usuarios de un grupo

  22. Categorías

    1. Crear entidad

    2. Crear mapeo de la entidad

    3. Crear migración

    4. Actualizar API Platform

    5. Crear fichero de grupos de serialización

    6. Actualizando extensión de Doctrine

    7. Crear voter para Category

    8. Introducción al sistema de eventos y listeners

    9. Usando PreWriteListener para validar la creación de categorías

    10. Testeando endpoints de categoría

  23. Movimientos

    1. Crear entidad

    2. Crear mapeo de la entidad

    3. Crear migración

    4. Actualizar API Platform

    5. Crear fichero de grupos de serialización

    6. Actualizando extensión de Doctrine

    7. Crear voter para Movement

    8. Usando PreWriteListener para validar la creación de movimientos

  24. Subir archivos de movimientos

    1. Crear estructura de ficheros para subir archivos

    2. Añadiendo lógica a los servicios y probando

    3. Testing de la acción para subir archivos

    4. Crear estructura de ficheros para descargar archivos

    5. Añadiendo lógica para descargar archivos

    6. Testeando acción para descargar archivos

    7. Refactorizando los enpoints y tests

  25. Filtros

    1. Configurando DateFilter en User

    2. Configurando SearchFilter en User

    3. Configurando BooleanFilter en User

    4. Configurando NumericFilter en Movement

    5. Configurando RangeFilter en Movement

    6. Creando custom SearchFilter

    7. Creando custom BooleanFilter

    8. Creando custom ExistsFilter

    9. Creando custom OrderFilter

    10. Creando custom NumericFilter y RangeFilter

    11. Filtros en entidades anidadas

  26. Modificando la API, trucos y consejos

    1. Decorando la respuesta de nuestra API

    2. Usando SQLite para acelerar tests funcionales

    3. Modificando la respuesta de nuestros endpoints

    4. Anidando subrecursos

Who Should Attend!

  • Desarrolladores Web que desean pasar al siguiente nivel conociendo y explotando las herramientas disponibles en el mercado
  • Programadores que quieren saber qué es lo que pasa internamente en la aplicación para aumentar sus habilidades y conseguir mejores puestos de trabajo

TAKE THIS COURSE

Tags

  • API
  • PHP
  • Symfony
  • PHPUnit

Subscribers

10756

Lectures

170

TAKE THIS COURSE



Related Courses