
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
En esta lección, presentaremos una demostración práctica de la API RESTful que crearás a lo largo del curso. Verás el proyecto terminado en acción, comprendiendo las funcionalidades clave y los objetivos que alcanzarás. Esta visión general te motivará y guiará en el desarrollo paso a paso de tu propia API.
Explora los fundamentos de qué es una API (Interfaz de Programación de Aplicaciones) y cómo facilita la comunicación entre diferentes aplicaciones. Entenderás la importancia de las APIs en el desarrollo moderno y su rol crucial en la creación de servicios web escalables y eficientes.
Aprende sobre las diferentes peticiones HTTP (GET, POST, PUT, DELETE) y cómo se utilizan para interactuar con las APIs RESTful. Esta lección cubrirá los conceptos básicos de cada tipo de solicitud y cómo aplicarlas correctamente en tu proyecto.
Descubre cómo las APIs responden a las solicitudes HTTP con respuestas específicas. Examinarás los componentes de una respuesta HTTP, incluyendo los headers y el cuerpo del mensaje, y aprenderás a manejar estas respuestas en tu aplicación.
Familiarízate con los códigos de respuesta HTTP que indican el estado de las solicitudes. Esta lección abordará los códigos de éxito, redirección, errores del cliente y errores del servidor, y cómo usarlos adecuadamente para comunicar el estado de las operaciones en tu API.
Configura tu entorno de desarrollo instalando las herramientas esenciales para trabajar con .NET Core. Proporcionamos enlaces directos y guías de instalación para asegurarte de que tengas todo lo necesario antes de empezar a desarrollar tu API.
Inicia tu primer proyecto de API RESTful con .NET Core. Esta lección te guiará a través de los pasos para crear un nuevo proyecto, configurar las dependencias iniciales y preparar tu entorno de desarrollo para el trabajo que viene.
Explora la estructura del proyecto creado, revisando los archivos y carpetas principales. Entenderás el propósito de cada elemento dentro de la estructura del proyecto .NET Core, facilitando la organización y gestión del código.
Obtén una visión general de las diferentes versiones de .NET y sus características. Esta lección te ayudará a entender la evolución de .NET, las mejoras en cada versión y cómo elegir la versión adecuada para tu proyecto de API RESTful.
Aprende a definir el modelo de datos para la entidad "Categoría". En esta lección, crearás una clase de modelo que representará las categorías en tu aplicación, estableciendo las propiedades y configuraciones necesarias para interactuar con la base de datos.
Descubre cómo conectar tu aplicación .NET Core a una base de datos. Esta lección te guiará a través de los pasos necesarios para establecer una conexión, asegurando que tu API pueda interactuar eficazmente con la base de datos para realizar operaciones CRUD.
Configura tu entorno de desarrollo instalando las extensiones esenciales para trabajar con Entity Framework Core. Esta lección incluye guías detalladas para instalar y configurar las herramientas que facilitarán la interacción con la base de datos.
Crea y configura el archivo de contexto de la base de datos, que servirá como puente entre tu aplicación y la base de datos. Aprenderás a definir DbSets y establecer la configuración necesaria para que Entity Framework Core maneje tus entidades.
Configura la cadena de conexión a SQL Server en tu aplicación .NET Core. Esta lección te mostrará cómo agregar y ajustar la cadena de conexión en el archivo de configuración de tu proyecto, garantizando una comunicación eficiente con la base de datos SQL Server.
Realiza migraciones para actualizar la estructura de la base de datos según los modelos definidos en tu aplicación. Aprenderás a crear y aplicar migraciones, asegurando que tu base de datos esté siempre sincronizada con los modelos de datos de tu aplicación.
El Repository Pattern es un diseño comúnmente utilizado en el desarrollo de software que separa la lógica de negocio de la lógica de acceso a datos. Permite encapsular la lógica de persistencia de datos dentro de clases específicas llamadas repositorios, proporcionando una capa de abstracción sobre la base de datos. Esto promueve un código más limpio, mantenible y testeable, al mismo tiempo que facilita la sustitución de la fuente de datos sin afectar la capa de negocio principal.
Crea una interfaz para definir el contrato que deben seguir todas las operaciones relacionadas con la entidad "Categoría". Esta interfaz actúa como un contrato que especifica los métodos que deben ser implementados por cualquier clase que maneje operaciones CRUD para las categorías, permitiendo una estructura más organizada y flexible en tu API.
Implementa la interfaz creada anteriormente en una clase concreta que maneje las operaciones de base de datos relacionadas con la entidad "Categoría". Esta implementación concreta proporciona la lógica real para interactuar con la base de datos, asegurando que las operaciones CRUD puedan ejecutarse correctamente según las necesidades de tu aplicación.
Un DTO (Data Transfer Object) es un patrón de diseño que se utiliza para transferir datos entre componentes del software. Consiste en una clase simple que contiene campos de datos y métodos básicos para acceder a estos datos. Los DTOs ayudan a reducir la cantidad de datos que se transfieren a través de la red y a aislar los cambios en la estructura de datos del modelo de dominio de una aplicación.
Define un DTO específico para la entidad "Categoría" que contenga solo los campos relevantes que deben ser transferidos entre capas de tu aplicación. Este DTO puede ser diferente al modelo de dominio de "Categoría", adaptándose mejor a las necesidades de presentación o comunicación de tu API, proporcionando una separación clara entre la capa de presentación y la capa de acceso a datos.
Configura AutoMapper, una librería que facilita la asignación automática entre objetos, para mapear datos entre modelos de dominio y DTOs de manera eficiente. Esta configuración establece reglas de asignación y proporciona un mecanismo automático para transformar objetos, simplificando la integración entre capas y reduciendo la duplicación de código en tu API.
Descarga aquí los archivos fuente de esta sección terminada
Desarrolla el controlador de categorías que manejará todas las solicitudes HTTP relacionadas con la entidad "Categoría". Este controlador actúa como un intermediario entre el frontend y la lógica de negocio, coordinando las operaciones CRUD y asegurando una comunicación eficiente con los repositorios y servicios de la aplicación.
Implementa la acción en el controlador de categorías que permite obtener una lista de todas las categorías disponibles. Esta acción responde a las solicitudes HTTP GET y devuelve una colección de DTOs de categorías, proporcionando una visión completa y estructurada de las categorías almacenadas en la base de datos.
Añade una acción en el controlador de categorías para obtener los detalles de una categoría específica basada en su ID. Esta acción maneja las solicitudes HTTP GET y devuelve un DTO de categoría individual, permitiendo a los usuarios consultar información detallada sobre una categoría en particular.
Desarrolla la acción para crear una nueva categoría en la base de datos mediante una solicitud HTTP POST. Esta acción recibe un DTO de categoría desde el cliente, lo valida y, si es correcto, lo guarda en la base de datos, devolviendo la información de la nueva categoría creada.
Implementa la acción para actualizar parcialmente una categoría existente usando HTTP PATCH. Esta acción permite modificar campos específicos de una categoría sin afectar otros datos, proporcionando una forma flexible y eficiente de actualizar la información.
Crea la acción para actualizar completamente una categoría existente con una solicitud HTTP PUT. En esta acción, se reemplaza toda la información de la categoría con los datos proporcionados en el DTO recibido, asegurando que la entidad se mantenga coherente y actualizada en la base de datos.
Desarrolla la acción para eliminar una categoría de la base de datos utilizando una solicitud HTTP DELETE. Esta acción recibe el ID de la categoría a eliminar, la busca en la base de datos y la borra, garantizando que la información se gestione de manera correcta y segura.
Define el modelo de datos para la entidad "Película" y configura las migraciones necesarias para actualizar la base de datos. Esta lección te guiará en la creación de la clase de modelo de película, así como en la ejecución de las migraciones para reflejar los cambios en la estructura de la base de datos.
Crea los Data Transfer Objects (DTOs) necesarios para la entidad "Película". Estos DTOs facilitarán la transferencia de datos entre las distintas capas de la aplicación, asegurando una comunicación eficiente y estructurada al trabajar con datos de películas.
Implementa el repositorio para gestionar las operaciones CRUD relacionadas con la entidad "Película". Este repositorio actuará como una capa de abstracción entre la lógica de negocio y la base de datos, permitiendo un acceso organizado y controlado a los datos de las películas.
Desarrolla el controlador para manejar las solicitudes HTTP relacionadas con las películas. Este controlador coordinará las operaciones CRUD para la entidad "Película", actuando como intermediario entre el frontend y la lógica de negocio.
Implementa la acción en el controlador de películas que permite obtener una lista de todas las películas disponibles. Esta acción responde a solicitudes HTTP GET y devuelve una colección de DTOs de películas, proporcionando una visión general y organizada de todas las películas almacenadas en la base de datos.
Añade una acción en el controlador de películas para obtener los detalles de una película específica basada en su ID. Esta acción maneja las solicitudes HTTP GET y devuelve un DTO de película individual, permitiendo a los usuarios consultar información detallada sobre una película en particular.
Desarrolla la acción para crear una nueva película en la base de datos mediante una solicitud HTTP POST. Esta acción recibe un DTO de película desde el cliente, lo valida y, si es correcto, lo guarda en la base de datos, devolviendo la información de la nueva película creada.
Implementa las acciones para actualizar una película existente usando HTTP PUT o PATCH. Estas acciones permiten modificar parcial o completamente los datos de una película, asegurando que la información se mantenga coherente y actualizada en la base de datos.
Desarrolla la acción para eliminar una película de la base de datos utilizando una solicitud HTTP DELETE. Esta acción recibe el ID de la película a eliminar, la busca en la base de datos y la borra, garantizando que la información se gestione de manera correcta y segura.
Crea una acción en el controlador de películas para obtener todas las películas pertenecientes a una categoría específica. Esta acción responde a solicitudes HTTP GET y devuelve una lista de DTOs de películas filtradas por categoría, facilitando la organización y consulta de películas por su clasificación.
Implementa la funcionalidad de búsqueda de películas en la base de datos. Esta acción manejará solicitudes HTTP GET con parámetros de búsqueda, devolviendo una lista de películas que coincidan con los criterios especificados, mejorando la usabilidad y experiencia del usuario al interactuar con la API.
Define el modelo de datos para la entidad "Usuario". En esta lección, crearás una clase que representará a los usuarios en tu aplicación, estableciendo propiedades esenciales como ID, nombre, correo electrónico y contraseña.
Crea los Data Transfer Objects (DTOs) necesarios para la entidad "Usuario". Estos DTOs facilitarán la transferencia de datos entre las diferentes capas de la aplicación, asegurando una comunicación eficiente y estructurada al manejar datos de usuarios.
Desarrolla una interfaz que defina el contrato para todas las operaciones relacionadas con la entidad "Usuario". Esta interfaz especificará los métodos que deben ser implementados para manejar las operaciones CRUD y otras funcionalidades relacionadas con los usuarios.
Implementa la interfaz de usuario en una clase concreta. Esta implementación proporcionará la lógica real para las operaciones definidas en la interfaz, gestionando la interacción con la base de datos y otras capas de la aplicación.
Configura el repositorio para gestionar las operaciones de registro de usuarios. Este repositorio actuará como una capa de abstracción entre la lógica de negocio y la base de datos, facilitando un acceso organizado y controlado a los datos de los usuarios durante el registro.
Implementa la funcionalidad para encriptar las contraseñas de los usuarios antes de almacenarlas en la base de datos. Esta lección te enseñará a usar técnicas y librerías de encriptación para asegurar que las contraseñas se guarden de manera segura y protegida.
Explora el concepto de Json Web Tokens (JWT) y su importancia en la autenticación y autorización de usuarios en aplicaciones web. Aprenderás cómo funcionan los JWT, cómo se generan y cómo se utilizan para mantener sesiones seguras en tu API.
Configura el repositorio para gestionar las operaciones de inicio de sesión de los usuarios. Implementa la lógica para verificar credenciales y generar tokens JWT, permitiendo a los usuarios autenticarse y obtener acceso seguro a la aplicación.
Desarrolla el controlador para manejar las solicitudes HTTP relacionadas con los usuarios y obtener una lista de todos los usuarios registrados. Esta acción responderá a solicitudes HTTP GET y proporcionará una visión general de todos los usuarios almacenados en la base de datos.
Añade una acción en el controlador de usuarios para obtener los detalles de un usuario específico basado en su ID. Esta acción manejará solicitudes HTTP GET y devolverá un DTO de usuario individual, permitiendo a los administradores consultar información detallada sobre un usuario en particular.
Implementa la acción para registrar nuevos usuarios en la base de datos mediante una solicitud HTTP POST. Esta acción recibirá un DTO de usuario desde el cliente, validará los datos, encriptará la contraseña y guardará el nuevo usuario en la base de datos.
Desarrolla la acción para que los usuarios puedan iniciar sesión en la aplicación mediante una solicitud HTTP POST. Esta acción verificará las credenciales proporcionadas, generará un token JWT si son correctas y devolverá este token al cliente para futuras solicitudes autenticadas.
CORS (Cross-Origin Resource Sharing) es un mecanismo de seguridad que permite a las aplicaciones web en un dominio solicitar recursos de un servidor en otro dominio. Este mecanismo es fundamental para habilitar o restringir el acceso a recursos en un servidor web desde diferentes orígenes, mejorando la seguridad y control sobre qué orígenes pueden interactuar con los recursos de la aplicación. Al configurar CORS, puedes especificar qué métodos HTTP, encabezados y orígenes son permitidos, protegiendo tu API de solicitudes no autorizadas y asegurando un intercambio seguro de datos entre dominios
Para implementar CORS en una aplicación .NET Core, debes seguir estos pasos:
Configuración en Startup.cs: En el método ConfigureServices, agrega la política de CORS especificando los orígenes permitidos, métodos y encabezados. Luego, en el método Configure, habilita CORS en la aplicación.
Definición de políticas específicas: Puedes definir diferentes políticas de CORS para diferentes partes de tu aplicación, proporcionando flexibilidad en el control de acceso.
Pruebas y ajustes: Después de configurar CORS, es esencial probar las solicitudes desde varios orígenes para asegurar que la configuración funciona como esperado y realizar ajustes según sea necesario.
Para proteger los accesos en una aplicación o API, hay varias técnicas que puedes utilizar. Aquí algunos pasos básicos:
a. Autenticación
Asegúrate de que solo los usuarios autorizados puedan acceder a tus recursos.
JWT (JSON Web Tokens): Una forma común de manejar la autenticación en APIs RESTful.
OAuth 2.0: Ideal para aplicaciones que necesitan autorización de acceso a recursos en nombre de un usuario.
b. Autorización
Controla lo que los usuarios autenticados pueden hacer.
Roles y Permisos: Define roles (admin, user, etc.) y asigna permisos específicos a cada rol.
c. HTTPS
Siempre usa HTTPS para cifrar la comunicación entre el cliente y el servidor.
d. Seguridad en las APIs
Rate Limiting: Limita la cantidad de solicitudes que un usuario puede hacer en un período de tiempo.
Input Validation: Valida todas las entradas del usuario para prevenir inyecciones y otras formas de ataques.
CORS: Configura correctamente el Cross-Origin Resource Sharing para controlar qué dominios pueden acceder a tu API.
Descubre cómo utilizar Postman para realizar pruebas exhaustivas en tu API. En esta lección, aprenderás a configurar y ejecutar solicitudes HTTP, verificar respuestas, y automatizar pruebas para asegurar que tu API funcione correctamente y sea segura.
Aprende a documentar la implementación de autenticación en tu API utilizando herramientas como Swagger. Esta lección te guiará en cómo agregar detalles de autenticación a tu documentación, proporcionando a los usuarios de la API una guía clara sobre cómo autenticarse y acceder a los recursos protegidos.
Implementa caching para mejorar el rendimiento de tu aplicación o API. Esta técnica permite almacenar temporalmente datos en memoria, reduciendo el tiempo de respuesta y la carga en el servidor. Aprende a configurar y utilizar caching para datos que se acceden frecuentemente, optimizando así el rendimiento y la experiencia del usuario.
Configura perfiles globales para manejar la configuración y el comportamiento de tu aplicación de manera centralizada. Esta práctica te permite establecer políticas de seguridad, middleware personalizado y otras configuraciones que afectan a toda la aplicación, asegurando consistencia y facilitando la gestión en entornos complejos.
Inicia tu aprendizaje sobre cómo gestionar múltiples versiones de API en .NET Core. Comprende la importancia de mantener versiones diferentes para soportar cambios y mejoras sin interrumpir a los usuarios actuales.
Aprende cómo instalar las extensiones necesarias para gestionar múltiples versiones de API en .NET Core. Estas herramientas facilitan la organización y mantenimiento de diferentes versiones para satisfacer las necesidades de los usuarios y desarrolladores.
Configura tu proyecto para agregar soporte a múltiples versiones de API. Esta configuración inicial te permite estructurar y gestionar las versiones de manera eficiente, asegurando una transición suave y controlada entre versiones.
Implementa un atributo de versión para marcar y distinguir cada versión de tu API. Este atributo facilita la identificación y el enrutamiento correcto de las solicitudes HTTP hacia la versión adecuada, proporcionando claridad y organización en tu aplicación.
Explora cómo manejar y mantener múltiples versiones de tu API de manera efectiva. Este enfoque te permite ofrecer nuevas funcionalidades mientras mantienes la compatibilidad con versiones anteriores, mejorando la experiencia del usuario y facilitando la evolución de tu API.
Configura la documentación Swagger para la versión 1 de tu API. Utiliza Swagger para generar documentación interactiva que describe los endpoints, parámetros y respuestas de la API versión 1, facilitando su entendimiento y uso por parte de los desarrolladores.
Descubre cómo gestionar de manera efectiva múltiples versiones de tu API en producción. Implementa estrategias para controlar el ciclo de vida de las versiones, manejar la obsolescencia y asegurar una transición sin problemas entre versiones para mantener la satisfacción del usuario.
Identifica y gestiona las APIs neutrales y obsoletas en tu proyecto. Aprende a manejar la obsolescencia de versiones antiguas, proporcionando un plan claro para la transición de los usuarios hacia versiones más recientes mientras mantienes la estabilidad y la seguridad de tu aplicación.
Máster API RESTful con ASP.NET Core Web API (.NET 9)
Domina el desarrollo de APIs modernas, profesionales y seguras con el stack más poderoso de Microsoft. En este curso completo aprenderás a crear servicios RESTful utilizando ASP.NET 9, .NET Core y Entity Framework Core, tanto con el enfoque tradicional basado en controladores como con el nuevo modelo Minimal API, ideal para microservicios ligeros y de alto rendimiento.
This course has English subtitles for all lessons.
¿Por qué este curso?
Totalmente actualizado a ASP.NET 9 y las últimas novedades del ecosistema .NET
Enseñado por un instructor con experiencia profesional en desarrollo backend y despliegue en la nube
Incluye teoría clara, buenas prácticas, proyectos reales y documentación profesional
Cubre desde arquitectura limpia hasta publicación en Microsoft Azure
Ideal para quienes buscan aprender desarrollo backend con orientación a servicios y APIs
¿Qué aprenderás?
Desarrollo completo de APIs RESTful en ASP.NET 9
Creación de APIs con controladores MVC
Implementación de Minimal APIs, el enfoque más eficiente y moderno de .NET
Integración de Entity Framework Core y SQL Server para persistencia de datos
Implementación de DTOs (Data Transfer Objects) y mapeo automático con AutoMapper
Arquitectura limpia con el patrón Repository y Unit of Work
Uso de Middlewares personalizados y manejo profesional de errores
Aplicación de paginación, filtros y cacheo de respuestas para mejorar el rendimiento
Seguridad y autenticación profesional
Autenticación y autorización con ASP.NET Identity y JSON Web Tokens (JWT)
Protección contra ataques comunes como inyecciones SQL o accesos no autorizados
Configuración avanzada de JWT y políticas de acceso por roles
Implementación de versionamiento de API, garantizando compatibilidad hacia atrás
Monitoreo, mantenimiento y trazabilidad
Uso de ILogger para logging y trazabilidad
Validaciones detalladas de entrada/salida y control de excepciones
Separación de capas y estructura escalable de proyectos
Publicación profesional en la nube
Despliegue de la API en Azure App Service
Migración de la base de datos a Azure SQL
Configuración de entornos reales de producción
Documentación automática con Swagger / OpenAPI
Generación de documentación profesional con Swashbuckle y Swagger UI
Descripción completa de endpoints, modelos, parámetros y respuestas
Configuración de pruebas autenticadas desde el entorno de Swagger
Proyectos prácticos incluidos
API CRUD de productos y usuarios, con controladores y Minimal API
Gestor de artículos con filtros, paginación y seguridad basada en JWT
Despliegue real en Azure con pasos guiados y configuración avanzada
Recursos y soporte incluidos
Acceso de por vida a todas las clases y actualizaciones futuras
Archivos fuente de todos los proyectos desarrollados en el curso
Soporte directo en la sección de preguntas y respuestas
Garantía de reembolso de 30 días
Subtítulos profesionales en inglés para estudiantes internacionales
¿A quién está dirigido?
Desarrolladores con conocimientos previos en C# que quieran especializarse en desarrollo de APIs
Programadores que buscan migrar o actualizar sus habilidades a .NET 9 y Minimal API
Estudiantes que desean aprender desarrollo backend desde cero con tecnologías modernas
Profesionales que deseen publicar APIs en entornos reales y trabajar con Azure
Lleva tus habilidades backend al siguiente nivel
Este curso es una guía práctica, moderna y actualizada para dominar el desarrollo de APIs RESTful con ASP.NET Core Web API, usando tanto patrones tradicionales como Minimal API. Aprende a construir servicios escalables y seguros que se integran fácilmente con aplicaciones móviles, frontend o microservicios.