|
via Udemy |
Go to Course: https://www.udemy.com/course/crear-api-con-symfony-y-api-platform/
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 usuariosAprenderá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 contenidosIntroducción al cursoRequisitos básicos para este cursoRequisitos del sistemaConfigurando WSL 2 en Windows 10Entorno de DockerArchivos y carpetas para el entornoConfiguración de NginxConfiguración de PHPConfiguración de Docker ComposeMakefileArchivos y carpetas para RabbitMQConfigurar entorno de docker para RabbitMQRepositorio RemotoEnlace al repositorio con el código del curso por seccionesCreación de proyecto SymfonyInstalación de librerías adicionalesLibrerías necesarias para el proyectoConfiguración básica de API PlatformRegistro de usuariosLibrerías necesarias y entidad UserMapeo de la entidad UserCreando BaseRepositoryCreando UserRepositoryListener para capturar excepcionesMigración para crear tabla userInstalar y configurar librería para generar JSON Web Tokens (JWT)Preparando servicio y controllerActualizando API Platform (swagger)Creando EncoderServiceCreando RequestServiceActualizando security.yamlCompletando la lógica del servicioServicio de MailerCreando estructura de archivosCreando proyecto Symfony y cambiando namespaceInstalar dependencias necesariasCómo funciona RabbitMQ?Instalar Messenger component y crear clase para el mensajeConfigurar Messenger en la APIEnviando nuestro primer mensaje a RabbitMQConfigurar Messenger component en MailerInstalar MailCatcher y TwigBundleCrear servicio, clase para rutas y plantillasAñadir lógica a MailerServiceConsumiendo nuestro primer mensaje de RabbitMQAcción para reenviar email de activación de cuentaCrear estructura de archivos y actualizar API PlatformLógica para enviar email de activación de cuentaAcción para activar cuenta de usuarioAcción para acceder (Login)Configurando el FirewallUserProvider y actualización de security.yamlActualizar endpoint para loginAñadir o quitar información del tokenAcción para restablecer contraseñaExplicación del procesoCrear archivos necesarios y actualizar API PlatformCrear mensaje y actualizar configuración de MessengerAñadiendo lógica al servicio y probando el envíoCreando mensaje y actualizando configuración en MailerCreando plantilla y actualizando servicio de MailerConsumiendo mensajes y comprobando erroresAcción para restablecer contraseñaCrear estructura de archivosAñadir lógica en el servicioAcción para cambiar la contraseñaCrear archivos y actualizar API PlatformAñadir lógica y probar el endpointUsando Argument Resolver para inyectar al usuario autenticadoRefactorizando controladores y desacoplándolos de los serviciosTest funcionales y unitarios de todos los endpoints creados.Instalando dependencias y configurando el proyectoCreando Fixtures para UserCreando base de datos de testingCreando la clase TestBase para tests funcionalesTest para la acción de loginTest para la acción de registroTest para la acción de pedir restablecimiento de contraseñaTest para acción de restablecer contraseñaTest para acción de reenviar email de activaciónTest para acción de cambiar contraseñaCreando UserServiceTestBase para tests unitariosTest para el servicio de activación de cuentaTest para el servicio de registro de usuariosTest para el servicio de solicitud de restablecimiento de contraseñaTest para el servicio de reenvío de email de activaciónTest para el servicio de resetear contraseñaTest para el servicio de cambiar contraseñaAcción para subir avatar de usuarioCrear estructura de carpetas y actualizar API PlatformOptimizar Swagger e instalar dependencias necesariasCrear Space en Digital Ocean y añadir variables en nuestra aplicaciónConfigurar nuestra API para subir archivos a la nubeAñadiendo lógica de servicios y probandoTest unitario para FileServiceTest unitario y funcional para acción de subir avatarOAuth (Facebook Login)Instalando dependencias y creando App en FacebookActualizando configuración y usando Adapter Pattern para cliente HTTPCrear ficheros necesarios y actualizar API PlatformAñadir lógica a los serviciosProbando y explicando el proceso entero.Configurando endpoints para usuarioCrear voter para UserActualizando API PlatformTests funcionales para los endpointsGrupos de usuariosCrear entidad y actualizar relación con UserMapeo de la entidadMigración para crear la tabla user_groupActualizando API PlatformCreando voter para GroupExtensiones de Doctrine para controlar la seguridad de subrecursosActualizando Fixtures y testeando endpoint para obtener grupos de usuariosTestBase para grupo y testeando endpoint para obtener gruposTest del endpoint para actualizar gruposTest del endpoint para eliminar gruposTest del endpoint para obtener usuarios de un grupoGestión de gruposCrear entidad para solicitudesMapeo de la entidad para solicitudesCrear migraciónCrear repositorioCrear clase para mensaje de RabbitMQ y actualizando configuraciónCreando excepciones y añadiendo lógica al servicioActualizar API Platform y probar envío de solicitudCrear mensaje y configuración en MailerCrear plantilla y actualizar MailerServiceCreando Handler para procesar mensajes y probarCreando ficheros y configuración para endpoint de aceptar solicitudesRefactorizando BaseRepository y añadiendo lógica al servicioTesteando la acción de aceptar solicitudesCrear archivos para endpoint para eliminar usuarios de un grupoCreando excepciones y añadiendo lógica al servicioTesting de la acción para eliminar usuarios de un grupoCategoríasCrear entidadCrear mapeo de la entidadCrear migraciónActualizar API PlatformCrear fichero de grupos de serializaciónActualizando extensión de DoctrineCrear voter para CategoryIntroducción al sistema de eventos y listenersUsando PreWriteListener para validar la creación de categoríasTesteando endpoints de categoríaMovimientosCrear entidadCrear mapeo de la entidadCrear migraciónActualizar API PlatformCrear fichero de grupos de serializaciónActualizando extensión de DoctrineCrear voter para MovementUsando PreWriteListener para validar la creación de movimientosSubir archivos de movimientosCrear estructura de ficheros para subir archivosAñadiendo lógica a los servicios y probandoTesting de la acción para subir archivosCrear estructura de ficheros para descargar archivosAñadiendo lógica para descargar archivosTesteando acción para descargar archivosRefactorizando los enpoints y testsFiltrosConfigurando DateFilter en UserConfigurando SearchFilter en UserConfigurando BooleanFilter en UserConfigurando NumericFilter en MovementConfigurando RangeFilter en MovementCreando custom SearchFilterCreando custom BooleanFilterCreando custom ExistsFilterCreando custom OrderFilterCreando custom NumericFilter y RangeFilterFiltros en entidades anidadasModificando la API, trucos y consejosDecorando la respuesta de nuestra APIUsando SQLite para acelerar tests funcionalesModificando la respuesta de nuestros endpointsAnidando subrecursos