|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/crear-api-con-symfony-y-api-platform/
课程评论:没有评论
课程名称:使用Symfony 5和API Platform创建API的终极指南 课程概述:在本课程中,您将学习如何使用PHP 7.4和Symfony 5以及API Platform创建API。不仅如此,您还将探索开发应用程序所需的各种工具,如Docker、PHPStorm、Xdebug、RabbitMQ等。项目将由三个服务组成: 1. 用于管理会计活动的API 2. 处理消息的RabbitMQ服务 3. 读取RabbitMQ消息并向用户发送电子邮件的邮件服务 您将学习如何阅读第三方库的代码,并创建可扩展且易于维护的设计模式和架构。此外,您还将学习如何用功能测试和单元测试覆盖应用程序的所有使用场景。完成此课程后,您将能够创建强大的API,助力您的职业发展。 课程内容包括: - 课程简介 - 必要的基础知识与系统要求 - WSL 2及Docker环境配置 - Symfony项目创建与配置 - 用户注册与认证,包含JWT的应用 - 发送和接收RabbitMQ消息 - 邮件服务的创建与配置 - 用户账户管理(注册、登录、重置密码) - 测试的创建与应用,包括功能测试和单元测试 - 使用OAuth(如Facebook登录)进行认证 - 用户及其组的管理功能 - 分类与活动的创建与管理 - API的扩展与优化,包含自定义过滤器 通过这些模块,您将掌握创建和管理现代API所需的必要技能。
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