Curso en línea
Construyendo Web APIs RESTful con ASP.NET Core
¡Aprende a construir y publicar cualquier Web API que te propongas!
Impartido por Felipe Gavilán
Detalles del curso
Información principal del curso
- Nivel
- Principiante
- Duración aproximada
- 20 h 21 min
- Contenido
- 243 clases
- Actualizado
Herramientas que utilizarás
Tecnologías y versiones
- ASP.NET Core Versión 9
Sobre este curso
Una ruta práctica y directa
Aprende a desarrollar Web APIs con ASP.NET Core desde cero con este increíble curso. Vamos a ver todo el ciclo de vida del desarrollo de un Web API, desde crear la solución, desarrollar los endpoints, trabajar la manipulación de recursos, hasta su puesta en producción en Azure. Aprende también a utilizar GitHub Actions para configurar un pipeline de integración continua y entrega continua, para poder publicar tus proyectos desde su código fuente en Github. A lo largo de este curso iremos desarrollando un proyecto completo y profesional, donde trabajamos: - Subida de archivos - Sistema de usuario con roles - Validaciones - Base de datos de SQL Server - Relaciones entre tablas - Entity Framework Core - Pruebas unitarias y de integración - Manejo de errores en producción - Y más! Los Web APIs son fundamentales en el desarrollo web moderno. Ya que nos permiten centralizar y proteger la lógica de nuestras soluciones. Además de que es en un Web API que típicamente tenemos acceso a una base de datos central con la cual todos tus usuarios se pueden comunicar. Ya sea que construyas una red social, una aplicación de deliveries, o incluso una app de oficina, un Web API te permite trabajar el back-end de aplicaciones móviles (Android, iOS, MAUI, etc.), web (React, Angular, Blazor, Vue, etc.), desktop, entre otros.
Contenido del curso
Currículo completo
12 secciones 243 clases
Sección 1 Fundamentos de Web API y HTTP 7 clases
- Introducción Vista previa gratis
- ¿Qué es un API? Vista previa gratis
- ¿Qué es REST? - Principios de REST Vista previa gratis
- Métodos HTTP Vista previa gratis
- Anatomía de una petición HTTP Vista previa gratis
- Códigos de Estatus HTTP Vista previa gratis
- Resumen Vista previa gratis
Sección 2 Configurando el Ambiente 20 clases
- Introducción Contenido restringido
- ¿Qué es .NET? Contenido restringido
- ¿Qué es C#? Contenido restringido
- Introducción a ASP.NET Core Contenido restringido
- Controladores y Minimal APIs Contenido restringido
- Instalando .NET Contenido restringido
- Instalando el EF Core CLI Contenido restringido
- Instalando Visual Studio Contenido restringido
- Instalando Visual Studio Code Contenido restringido
- Instalando SQL Server Contenido restringido
- Instalando Postman Contenido restringido
- Creando el Web API con VS Contenido restringido
- Creando el Web API con VS Code Contenido restringido
- Explorando el Web API - Soluciones y Proyectos Contenido restringido
- ¿Qué es Nullable? Contenido restringido
- Usings Implícitos Contenido restringido
- Archivo LaunchSettings Contenido restringido
- Clase Program Contenido restringido
- Archivos AppSettings Contenido restringido
- Resumen Contenido restringido
Sección 3 Nuestro Primer Web API 11 clases
- Introducción Contenido restringido
- Iniciando el Desarrollo del Web API Contenido restringido
- Instalando Entity Framework Core Contenido restringido
- Leyendo y Creando Recursos desde el Controlador Contenido restringido
- Obteniendo un Registro Por su Id Contenido restringido
- Actualizando Recursos Contenido restringido
- Borrando Recursos Contenido restringido
- Creando una Segunda Tabla Contenido restringido
- CRUD de Libros Contenido restringido
- Consultando la Data Relacionada Contenido restringido
- Resumen Contenido restringido
Sección 4 Fundamentos de ASP.NET Core y Web API 24 clases
- Introducción al Módulo 4 Contenido restringido
- Controladores y Acciones Contenido restringido
- Explorando Nuestro Controlador Contenido restringido
- Reglas de Ruteo Contenido restringido
- Restricciones de Ruta Contenido restringido
- Tipos de Datos de Retorno Contenido restringido
- Programación Asíncrona Contenido restringido
- Introducción al Model Binding Contenido restringido
- Validaciones por Defecto Contenido restringido
- Otras Validaciones Por Defecto Contenido restringido
- Validaciones Personalizadas por Atributo Contenido restringido
- Validaciones Personalizadas por Modelo Contenido restringido
- Validando desde el Controlador - Validando Contra la BD Contenido restringido
- Inyección de Dependencias y Acoplamiento Contenido restringido
- Utilizando el Principio de Inversión de Dependencias Contenido restringido
- Servicios en ASP.NET Core Contenido restringido
- Ejemplo de Tiempo de Vida de los Servicios Contenido restringido
- Usando Un Singleton Para Nuestro Repositorio en Memoria Contenido restringido
- ¿Y qué hacemos con Entity Framework Core? Contenido restringido
- Loggers Contenido restringido
- Introducción al Middleware Contenido restringido
- Ejemplos de Middleware Contenido restringido
- Colocando los Middlewares en Su Propia Clase Contenido restringido
- Resumen Contenido restringido
Sección 5 Manipulando Recursos 24 clases
- Introducción al Módulo 5 Contenido restringido
- Limpiando el Proyecto Contenido restringido
- Repaso de Cómo Configurar EF Core Contenido restringido
- Repaso de Cómo Insertar Registros en la Base de Datos Contenido restringido
- Creando Recursos con Post Contenido restringido
- Nombres, Apellidos y Datos Sensibles Contenido restringido
- DTOs y Automapper Contenido restringido
- DTOs de Libros Contenido restringido
- DTOs Que Suman Contenido restringido
- Leyendo Registros con EF Core Contenido restringido
- Actualizando Recursos Contenido restringido
- HTTP Patch y JSON Patch Contenido restringido
- Actualizando Solo Algunos Campos con HTTP PATCH Contenido restringido
- Borrando Recursos Contenido restringido
- Relación Uno a Muchos Contenido restringido
- Controlador de un Recurso Dependiente Contenido restringido
- Relación Muchos a Muchos Contenido restringido
- Insertando Datos en una Relación Muchos a Muchos Contenido restringido
- Actualizando Registros de Relaciones Muchos a Muchos Contenido restringido
- Obteniendo Data Relacionada en Una Relación Muchos a Muchos Contenido restringido
- Creando una Recurso con sus Recursos Relacionados Contenido restringido
- Creando una Colección de Recursos Contenido restringido
- Obteniendo una Colección de Recursos Contenido restringido
- Resumen Contenido restringido
Sección 6 Configuraciones 15 clases
- Introducción Contenido restringido
- Introducción a las Configuraciones Contenido restringido
- Ejemplo de IConfiguration Contenido restringido
- Secciones - GetChildren Contenido restringido
- Usando el AppSettings Contenido restringido
- Variables de Ambiente Contenido restringido
- Orden de Declaración de los Proveedores de Configuración Contenido restringido
- User Secrets Contenido restringido
- Línea de Comandos Contenido restringido
- Diccionario en Memoria como Proveedor Contenido restringido
- Patrón en Opciones Contenido restringido
- Utilizando IOptionsSnapshot Contenido restringido
- Utilizando IOptionsMonitor Contenido restringido
- Consideraciones de Seguridad Contenido restringido
- Resumen Contenido restringido
Sección 7 Seguridad 27 clases
- Introducción al Módulo 7 Contenido restringido
- Limpiando la App Contenido restringido
- Autenticación y Autorización Contenido restringido
- Configurando Identity Contenido restringido
- Authorize y AllowAnonymous Contenido restringido
- Registrando Usuarios Contenido restringido
- Login de Usuarios Contenido restringido
- Enviando el JWT Contenido restringido
- Relación Entre Usuarios y Comentarios Contenido restringido
- Obteniendo al Usuario Logueado Contenido restringido
- Utilizando el Servicio de Usuarios Contenido restringido
- Renovando el Token Contenido restringido
- Configurando la Autorización Basada en Claims Contenido restringido
- Agregando una Columna a la Tabla de Usuarios Contenido restringido
- Obteniendo el Listado de Usuarios Contenido restringido
- Deslogueo Contenido restringido
- Introducción a CORS Contenido restringido
- Experimentando un Error de CORS Contenido restringido
- Configurando CORS en ASP.NET Core Contenido restringido
- Retornando Cabeceras Personalizadas - CORS Contenido restringido
- Entendiendo la Encriptación Contenido restringido
- Encriptación en ASP.NET Core Contenido restringido
- Ejemplo Práctico de Encriptación Limitada por Tiempo - Links que Expiran Contenido restringido
- Llaves de Protección de Datos Contenido restringido
- Entendiendo Hashing Contenido restringido
- Hashes en ASP.NET Core Contenido restringido
- Resumen Contenido restringido
Sección 8 Escenarios Avanzados 40 clases
- Introducción Contenido restringido
- Limpiar Contenido restringido
- Instalando Swagger Contenido restringido
- Agregando Informaciones Extras a Swagger Contenido restringido
- Agregando Descripciones a las Acciones Contenido restringido
- Swagger y JWT Contenido restringido
- Personalizando Los Endpoints En los Que Swagger usa JWT - IParameterFilter Contenido restringido
- Paginación Contenido restringido
- Paginación en Libros Contenido restringido
- Preparando el Terreno Para Guardar Imágenes Contenido restringido
- Salvando Imágenes en Azure Contenido restringido
- Salvando Imágenes Localmente Contenido restringido
- Filtros Dinámicos con EF Core Contenido restringido
- Ordenado Dinámico Contenido restringido
- Borrado Lógico y Filtros Globales Contenido restringido
- Implementando Cache con OutputCache Contenido restringido
- Limpiando el Cache Contenido restringido
- Introducción al Cache Distribuido Contenido restringido
- Creando una Base de Datos en Redis Contenido restringido
- Utilizando Redis en ASP.NET Core Contenido restringido
- Introducción a los Filtros Contenido restringido
- Creando Nuestro Primer Filtro Contenido restringido
- Filtros Que Aceptan Parámetros Contenido restringido
- Filtros Globales Contenido restringido
- Filtro Para Centralizar Validaciones Repetidas Contenido restringido
- Manejo de Errores Contenido restringido
- Versionando el Web API Contenido restringido
- Versionando el Web API con la URL Contenido restringido
- Evitando Repetición de Código al Versionar Contenido restringido
- Swagger y Versionamiento Contenido restringido
- Introducción a HATEOAS Contenido restringido
- Implementando HATEOAS Contenido restringido
- Agregando Otras Rutas Contenido restringido
- Removiendo Rutas las Cuales el Usuario No Puede Usar Contenido restringido
- Enlaces HATEOAS en un DTO Contenido restringido
- Enlaces de HATEOAS en un Listado Contenido restringido
- Excluir HATEOAS con un Query String Contenido restringido
- HATEOAS y Filtros (Parte 1) Contenido restringido
- HATEOAS y Filtros (Parte 2) Contenido restringido
- Resumen Contenido restringido
Sección 9 Pruebas Automáticas 31 clases
- Introducción Contenido restringido
- Limpiando el Proyecto Contenido restringido
- ¿Qué es una Prueba? Contenido restringido
- Pruebas Automáticas Contenido restringido
- Pruebas Unitarias Contenido restringido
- Nuestra Primera Prueba Unitaria Contenido restringido
- Ejecutando una Misma Prueba con Distintos Valores Contenido restringido
- Agregando Más Pruebas Unitarias Contenido restringido
- Probando EF Core Contenido restringido
- Preparándonos para Probar Controladores Contenido restringido
- Probando el Controlador de Autores - Obtener por Id Contenido restringido
- Probando la Creación de un Autor Contenido restringido
- Verificando que usemos una dependencia Contenido restringido
- ¿Por que usar varios contextos? - Evitando Falsos Positivos Contenido restringido
- Evitando Repetir Código Contenido restringido
- Probando el Put de Autores Contenido restringido
- Probando el Patch de Autores Contenido restringido
- Probando el Delete de Autores Contenido restringido
- Probando un Método que usa el HttpContext Contenido restringido
- Probando un Método que usa Claims Contenido restringido
- Preparándonos para Probar Login y Registro Contenido restringido
- Probando los Métodos de Registro y Login Contenido restringido
- Pruebas de Integración Contenido restringido
- Configurando las Pruebas de Integración en ASP.NET Core Contenido restringido
- Nuestra Primera Prueba de Integración Contenido restringido
- Verificando que una Acción Está Protegida Contenido restringido
- Métodos Auxiliares para Crear Usuarios en Pruebas de Integración Contenido restringido
- Verificando que Sólo un Admin Pueda Crear un Recurso Contenido restringido
- Probando que un Usuario no Pueda Borrar el Comentario de Otro Contenido restringido
- Probando que un Filtro se Ejecuta Contenido restringido
- Resumen Contenido restringido
Sección 10 Despliegues 13 clases
- Introducción Contenido restringido
- Publicando en Azure - Managed Identity Contenido restringido
- Publicando en Azure - Usuario y Password Contenido restringido
- Publicando en Azure usando VS Code Contenido restringido
- ¿Qué hacer si la app no sube? Contenido restringido
- Viendo errores en producción Contenido restringido
- Publicando en IIS Contenido restringido
- Integración continua y Entrega Continua Contenido restringido
- Subiendo el código a GitHub Contenido restringido
- Breve Introducción a los GitHub Actions Contenido restringido
- Implementando la Integración Continua Contenido restringido
- Implementando la Entrega Continua Contenido restringido
- Resumen Contenido restringido
Sección 11 Bono: Construyendo un API con Suscripciones 19 clases
- Introducción Contenido restringido
- Lo Que Haremos Contenido restringido
- Preparando el Proyecto Contenido restringido
- Entidad Llave Contenido restringido
- Gestionando las Llaves Contenido restringido
- Limitando las Peticiones Por Día Contenido restringido
- Usando un Atributo Personalizado Para Deshabilitar la Limitación de Peticiones Contenido restringido
- Restricciones de Llaves Contenido restringido
- Restricciones por Dominio Contenido restringido
- Restricciones por IP Contenido restringido
- CRUD Restricciones por Dominio Contenido restringido
- CRUD Restricciones por IP Contenido restringido
- Usuarios Mala Paga Contenido restringido
- Entidades Facturas Contenido restringido
- Emitiendo Facturas Contenido restringido
- Tarea Recurrente Para Emitir Facturas Contenido restringido
- Tarea Recurrente Para Procesar Facturas No Pagadas Contenido restringido
- Saldando Facturas Contenido restringido
- Resumen Contenido restringido
Sección 12 Bono: Rate Limiting 12 clases
- Introducción Contenido restringido
- Introducción al Rate Limiting Contenido restringido
- Configuración Básica - Global Contenido restringido
- El Problema de Limitar por IP Contenido restringido
- Uso de Políticas Personalizadas por Endpoint Contenido restringido
- Algoritmos Disponibles Contenido restringido
- Demo: Algoritmos Disponibles Contenido restringido
- Respuestas Personalizadas Contenido restringido
- Encolando Peticiones (Queues) Contenido restringido
- Limitando por Usuario Autenticado Contenido restringido
- Reflexiones Acerca del Rate Limiting Contenido restringido
- Resumen Contenido restringido
Al finalizar, podrás…
Lo que aprenderás
- Construir Web APIs con .NET Core
- Publicar Web APIs en Azure
- Utilizar Azure DevOps para configurar integración y entrega continua (CI/CD)
- Desarrollar Web APIs RESTful
Aplica lo aprendido
Resultado práctico
Al finalizar el curso podrás desarrollar Web APIs profesionales con ASP.NET Core
Antes de comenzar
Requisitos previos
- Conocimientos básicos de C# (saber qué es una clase, el condicional IF, cómo invocar una función)
¿Es para ti?
Este curso es para ti si…
- Programadores de .NET que quieren aprender a construir Web APIs