CursosEmpresasBlogLiveConfPrecios

Creando controladores

Clase 20 de 22 • Curso de APIs con .NET

Clase anteriorSiguiente clase

Contenido del curso

Introducción a API en .NET
  • 1
    Domina las API con .NET

    Domina las API con .NET

    02:50
  • 2
    Prerrequisitos

    Prerrequisitos

    02:36
  • 3
    ¿Qué es una API?

    ¿Qué es una API?

    04:22
  • 4
    ¿Qué es REST?

    ¿Qué es REST?

    08:18
  • 5
    Creando tu primera API con .NET

    Creando tu primera API con .NET

    04:04
Funcionamiento de una API en .NET
  • 6
    Consumiendo API desde Postman

    Consumiendo API desde Postman

    05:33
  • 7
    Análisis del template para APIs de .NET

    Análisis del template para APIs de .NET

    10:51
  • 8
    Atributos para verbos HTTP

    Atributos para verbos HTTP

    14:56
  • 9
    Manejo de rutas

    Manejo de rutas

    09:51
  • 10
    Minimal API vs. Web API

    Minimal API vs. Web API

    08:36
Arquitectura y configuración
  • 11
    ¿Qué son los middlewares?

    ¿Qué son los middlewares?

    08:54
  • 12
    Creando un nuevo middleware

    Creando un nuevo middleware

    14:46
  • 13
    Inyección de dependencias

    Inyección de dependencias

    16:43
  • 14
    Agregando Logging a API

    Agregando Logging a API

    09:25
  • 15
    Documentando API con Swagger

    Documentando API con Swagger

    08:03
Manipulación de datos con Entity Framework
  • 16
    Agregando librerías para Entity Framework

    Agregando librerías para Entity Framework

    04:38
  • 17
    Configuración de Entity framework y clases base

    Configuración de Entity framework y clases base

    08:31
  • 18
    Creación de servicios

    Creación de servicios

    12:24
  • 19
    Inyectando servicios como dependencia

    Inyectando servicios como dependencia

    04:43
  • 20
    Creando controladores

    Creando controladores

    11:32
  • 21
    Probando API con una base de datos SQL server

    Probando API con una base de datos SQL server

    14:03
Outro
  • 22
    Retrospectiva: APIs con .NET

    Retrospectiva: APIs con .NET

    03:05
    Felipe de Jesús Isidro

    Felipe de Jesús Isidro

    student•
    hace 3 años

    Como recomendación la propiedad del servicio debería ser declarada como protected y de solo lectura de la siguiente forma

    protected readonly ITareasService _tareasService;

    es un estándar que recomienda .Net

      Wilson Bienvenido Otaño Mateo

      Wilson Bienvenido Otaño Mateo

      student•
      hace un año

      Muchisimas gracias por ese aporte, vi que gpt lo uso una vez que se lo pedi, pero no sabia muchas gracias

    rafael malanco velazquez

    rafael malanco velazquez

    student•
    hace 3 años
    code.png
    Erick Alexander Cabrera González

    Erick Alexander Cabrera González

    student•
    hace 2 años

    Hola, para quienes al momento de compilar el codigo se les presenta el error:

    Unhandled exception. System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor ‘ServiceType: webapi.Services.ICategoriaService Lifetime: Scoped ImplementationType: webapi.Services.CategoriaService’: Unable to resolve service for type ‘webapi.TareasContext’ while attempting to activate ‘webapi.Services.CategoriaService’.) —> System.InvalidOperationException: Error while validating the service descriptor ‘ServiceType: webapi.Services.ICategoriaService Lifetime: Scoped ImplementationType: webapi.Services.CategoriaService’: Unable to resolve service for type ‘webapi.TareasContext’ while attempting to activate ‘webapi.Services.CategoriaService’.

    No es un error en el codigo en realidad, ya que al momento de seguir las clases siguientes y agregar el codigo que falta este "error" se soluciona. Muy segurmente no funciona por la falta de codigo adicional

      Diego Eduardo Téllez Contreras

      Diego Eduardo Téllez Contreras

      student•
      hace 2 años

      Efectivamente es normal que aparezca eso, falta configurar otras cositas en la siguiente clase! Este comentario debería estar más arriba!

      JUAN PABLO MAYORGA MENDIETA

      JUAN PABLO MAYORGA MENDIETA

      student•
      hace 2 años

      excelente, muchas gracias!

    Boris Vargas Paucara

    Boris Vargas Paucara

    student•
    hace 3 años

    CategoriaController

    using Microsoft.AspNetCore.Mvc; using webapi.Models; using webapi.Services; namespace webapi.Controllers; [Route("api/[controller]")] public class CategoriaController : ControllerBase { ICategoriaService categoriaService; public CategoriaController(ICategoriaService service) { categoriaService = service; } [HttpGet] public IActionResult Get() { return Ok(categoriaService.Get()); } [HttpPost] public IActionResult Post([FromBody] Categoria categoria) { categoriaService.Save(categoria); return Ok(); } [HttpPut("{id}")] public IActionResult Put(Guid id, [FromBody] Categoria categoria) { categoriaService.Update(id, categoria); return Ok(); } [HttpDelete("{id}")] public IActionResult Delete(Guid id) { categoriaService.Delete(id); return Ok(); } }

    TareaController

    using Microsoft.AspNetCore.Mvc; using webapi.Models; using webapi.Services; namespace webapi.Controllers; [Route("api/[controller]")] public class TareaController : ControllerBase { ITareaService tareaService; public TareaController(ITareaService service) { tareaService = service; } [HttpGet] public IActionResult Get() { return Ok(tareaService.Get()); } [HttpPost] public IActionResult Post([FromBody] Tarea tarea) { tareaService.Save(tarea); return Ok(); } [HttpPut("{id}")] public IActionResult Put(Guid id, [FromBody] Tarea tarea) { tareaService.Update(id, tarea); return Ok(); } [HttpDelete("{id}")] public IActionResult Delete(Guid id) { tareaService.Delete(id); return Ok(); } }
      Felipe Ignacio Inostroza Vega

      Felipe Ignacio Inostroza Vega

      student•
      hace 3 años

      Gracias por el aporte! :D

    Edgar Alexander Espinoza Gonzalez

    Edgar Alexander Espinoza Gonzalez

    student•
    hace 3 años

    porque no creamos como async los metodos en esta seccion, en teoria ese deberia ser el estandar o estoy errado?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Es una excelente practica usar async, mejora mucho el rendimiento

      Daniel Valencia Alvarez

      Daniel Valencia Alvarez

      student•
      hace 9 meses

      ¿Es valido configurar todos los métodos (Get(), Post(), Put() y Delete()) como async o hay algúno que no deba tener esta configuración?

    Ronny Manuel De La Cruz Perez

    Ronny Manuel De La Cruz Perez

    student•
    hace 4 años

    Al crear lo controladores de esta manera, como puedo consumirlos para pasarlo a la vista?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 4 años

      Debe cambiar el atributo de ApiController a Controller y puedes retornar la View indicando el nombre o ruta + nombre. Ejemplo "Views/Tareas/Index.cshtml" Mas info por acá: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/overview?view=aspnetcore-6.0

      Juan Betancur

      Juan Betancur

      student•
      hace 3 años

      Miguel donde puedo encontrar el atributo ApiController?

    Carina Correjidor

    Carina Correjidor

    student•
    hace 3 años

    Hola una consulta desde un controlador puedo generar un redirect ? como lo definiria?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Claro que si: return RedirectToRoute(new { controller = "User", action = "get" }); }

    Jaime Eduardo Falla Cardozo

    Jaime Eduardo Falla Cardozo

    student•
    hace 3 años

    Faltó explicar en el curso los niveles en una Api REST

    JUAN SEBASTIAN ORTIZ

    JUAN SEBASTIAN ORTIZ

    student•
    hace 12 días

    using Microsoft.AspNetCore.Mvc;

    using webapi.Models;

    using webapi.Services;

    namespace webapi.Controllers;

    [Route("api/[controller]")]

    public class TareaController : ControllerBase

    {

        private readonly ITareaService TareaService;

        public TareaController(ITareaService service)

        {

            TareaService = service;

        }

        [HttpGet]

        public IActionResult Get()

        {

            var tareas = TareaService.Get();

            return Ok(tareas);

        }

        [HttpPost]

        public async Task<IActionResult> Post([FromBody] Tarea tarea)

        {

            await TareaService.Save(tarea);

            return Ok();

        }

        [HttpPut("{id}")]

        public async Task<IActionResult> Put(Guid id, [FromBody] Tarea tarea)

        {

            await TareaService.Update(id, tarea);

            return Ok();

        }

        [HttpDelete("{id}")]

        public async Task<IActionResult> Delete(Guid id)

        {

            await TareaService.Delete(id);

            return Ok();

        }

    }

    Charly Johan Manrique Gómez

    Charly Johan Manrique Gómez

    student•
    hace 3 años

    buen día, de casualidad a alguno le funcionó el metodo put de la categoria ?
    he intentado de varias maneras pero no me funciona, inclusive agregue el FromRoute pensando que llegara hacer eso, en postman lo pongo con comillas dobles,simples,sin comillas pero me sigue saliendo (404) recurso no encontrado, con el servicio de post y get si me funciona correctamente.

    POSTMAN: https://localhost:7044/api/Categoria/Put/"fe2de405-c38e-4c90-ac52-da0540dfb402"

    SERVICIO: public async Task Update(Guid id, Categoria categoria) { var categoriaActual = context.Categorias.Find(id);

    if(categoriaActual != null) { categoriaActual.Nombre = categoria.Nombre; categoria.Descripcion = categoria.Descripcion; categoria.Peso = categoria.Peso; await context.SaveChangesAsync(); } }

    CONTROLADOR

    [HttpPut("{id}")] [Route("{action}")] public IActionResult Put([FromRoute]Guid id, [FromBody] Categoria categoria) { categoriaService.Update(id, categoria); return Ok(); }
      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Elimina el atributo route, por otro lado manda el ID sin commillas y no le coloques Put simplemente llamalo de esta manera por el http verb put en postman: https://localhost:7044/api/Categoria/fe2de405-c38e-4c90-ac52-da0540dfb402

      Charly Johan Manrique Gómez

      Charly Johan Manrique Gómez

      student•
      hace 3 años

      Genial, me funciono correctamente muchas gracias.

    Juan Pablo Arano

    Juan Pablo Arano

    student•
    hace 3 años

    A diferencia tuya, cuando te saltan errores de que no importaste una libreria, a mi me marca error pero no me dice que libreria deberia importar. Como puedo solucionarlo? Alguna extension?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      debes instalar la extensión de C#, aveces igual toca esperar un rato a que la encuentre o reiniciar el Visual Code, para C# aveces salen estos problemas

    Edgar Alexander Espinoza Gonzalez

    Edgar Alexander Espinoza Gonzalez

    student•
    hace 3 años

    porque en esta seccion no creamos los metodos como async tengo entendido que es el estandar o estoy errado?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Es una buena práctica hacerlos con Async ayuda mucho el performance

    Esteban Sánchez Ruiz

    Esteban Sánchez Ruiz

    student•
    hace 3 años

    Excelente buena explicacion como siempre!

    David Cubides Enciso

    David Cubides Enciso

    student•
    hace 3 años

    Bien explicado.

    Enrique Arce Alejandro

    Enrique Arce Alejandro

    student•
    hace 3 años

    Me sale el siguiente error, y tengo la interface heredada "public class CategoriaService : ICategoriaService", el error es este:

    Unhandled exception. System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: webapi.Services.ICategoriaService Lifetime: Scoped ImplementationType: webapi.Services.CategoriaService': Unable to resolve service for type 'webapi.TareasContext' while attempting to activate 'webapi.Services.CategoriaService'.) ---> System.InvalidOperationException: Error while validating the service descriptor 'ServiceType: webapi.Services.ICategoriaService Lifetime: Scoped ImplementationType: webapi.Services.CategoriaService': Unable to resolve service for type 'webapi.TareasContext' while attempting to activate 'webapi.Services.CategoriaService'.

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Segun error no tiene configurado correctamente el contexto de TareasContext oara que pueda ser inyecta a CategoriaService correctamente

    Alvaro Rafael Guete Puello

    Alvaro Rafael Guete Puello

    student•
    hace 6 meses

    ¿Qué puedo hacer si Visual Studio Code no detecta bien mis archivos C#?

      Jonathan Harley Sabogal toro

      Jonathan Harley Sabogal toro

      student•
      hace 6 meses

      verifica si están con la extension .cs ademas debes tener instalado en extension el devpack de c#

    Rosmary Alejandra Rojas Perez

    Rosmary Alejandra Rojas Perez

    student•
    hace 3 años

    Hola me genera un error y no logro resolverlo requiero su ayuda please!

    Unhandled exception. System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: webapi.Services.ICategoriaService Lifetime: Scoped ImplementationType: webapi.Services.CategoriaService': Unable to resolve service for type 'webapi.TareasContext' while attempting to activate 'webapi.Services.CategoriaService'.) (Error while validating the service descriptor 'ServiceType: webapi.Services.ITareasService Lifetime: Scoped ImplementationType: webapi.Services.TareasService': Unable to resolve service for type 'webapi.TareasContext' while attempting to activate 'webapi.Services.TareasService'.) ---> System.InvalidOperationException: Error while validating the service descriptor 'ServiceType: webapi.Services.ICategoriaService Lifetime: Scoped ImplementationType: webapi.Services.CategoriaService': Unable to resolve service for type 'webapi.TareasContext' while attempting to activate 'webapi.Services.CategoriaService'. ---> System.InvalidOperationException: Unable to resolve service for type 'webapi.TareasContext' while attempting to activate 'webapi.Services.CategoriaService'. at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache lifetime, Type serviceType, Type implementationType, CallSiteChain callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain, Int32 slot) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.GetCallSite(ServiceDescriptor serviceDescriptor, CallSiteChain callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.ValidateService(ServiceDescriptor descriptor) --- End of inner exception stack trace --- at Microsoft.Extensions.DependencyInjection.ServiceProvider.ValidateService(ServiceDescriptor descriptor) at Microsoft.Extensions.DependencyInjection.ServiceProvider..ctor(ICollection1 serviceDescriptors, ServiceProviderOptions options) --- End of inner exception stack trace --- at Microsoft.Extensions.DependencyInjection.ServiceProvider..ctor(ICollection1 serviceDescriptors, ServiceProviderOptions options) at Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(IServiceCollection services, ServiceProviderOptions options)
    at Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory.CreateServiceProvider(IServiceCollection containerBuilder) at Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter1.CreateServiceProvider(Object containerBuilder) at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider() at Microsoft.Extensions.Hosting.HostBuilder.Build() at Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build() at Program.<Main>$(String[] args) in C:\Users\57313\Documents\testTechnical\webapi\Program.cs:line 18 ---> (Inner Exception #1) System.InvalidOperationException: Error while validating the service descriptor 'ServiceType: webapi.Services.ITareasService Lifetime: Scoped ImplementationType: webapi.Services.TareasService': Unable to resolve service for type 'webapi.TareasContext' while attempting to activate 'webapi.Services.TareasService'. ---> System.InvalidOperationException: Unable to resolve service for type 'webapi.TareasContext' while attempting to activate 'webapi.Services.TareasService'. at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache lifetime, Type serviceType, Type implementationType, CallSiteChain callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain, Int32 slot) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.GetCallSite(ServiceDescriptor serviceDescriptor, CallSiteChain callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.ValidateService(ServiceDescriptor descriptor) --- End of inner exception stack trace --- at Microsoft.Extensions.DependencyInjection.ServiceProvider.ValidateService(ServiceDescriptor descriptor) at Microsoft.Extensions.DependencyInjection.ServiceProvider..ctor(ICollection1 serviceDescriptors, ServiceProviderOptions options)

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Revisa si CategoriaService esta implementando ICategoriaService Este parece ser el problema

    Fernando Vergel

    Fernando Vergel

    student•
    hace 3 años

    Hola, me esta arrojando este error, despues de hacer el services.AddScoped<ITareaService, TareaService>();

    Unhandled exception. System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: WEBAPI.Services.ITareasService Lifetime: Scoped ImplementationType: WEBAPI.Services.TareasService': Unable to resolve service for type 'WEBAPI.TareasContext' while attempting to activate 'WEBAPI.Services.TareasService'.)

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Debes revisas si TareasService esta implementando la interfaz esto se hace utilizando el operador dos puntos así: TareasService : ITareaService

      Fernando Vergel

      Fernando Vergel

      student•
      hace 3 años

      Hola Miguel, gracias por la respuesta, asi esta implementado:

      using API.Models; using System; using System.Collections.Generic; using System.Threading.Tasks;

      namespace API.Services

      { public class TareaService : ITareaService { TareasContext Context; public TareaService(TareasContext dbContext) { Context = dbContext; } public IEnumerable<Tarea> Get() { return Context.Tareas; } public async Task Save(Tarea tarea) { Context.Add(tarea); await Context.SaveChangesAsync(); } public async Task Update(Guid id, Tarea tarea) { var tareaActual = Context.Tareas.Find(id); if (tareaActual != null) { tareaActual.CategoriaId = tarea.CategoriaId; tareaActual.Titulo = tarea.Titulo; tareaActual.PrioridadTarea = tarea.PrioridadTarea; tareaActual.Descripcion = tarea.Descripcion; await Context.SaveChangesAsync(); } } public async Task Delete(Guid id) { var tareaActual = Context.Tareas.Find(id); if (tareaActual != null) { Context.Remove(tareaActual); await Context.SaveChangesAsync(); } } } public interface ITareaService { IEnumerable<Tarea> Get(); Task Save(Tarea tarea); Task Update(Guid id, Tarea tarea); Task Delete(Guid id); }

      }

    Luis Antonio Preza Padilla

    Luis Antonio Preza Padilla

    student•
    hace 2 años

    Que hace el atributo APIController?

    Miguel Angel Reyes Moreno

    Miguel Angel Reyes Moreno

    student•
    hace 2 años

    VSC me marcaba error porque no tenía los métodos en la Interfaz de TareasService, solo asegurense de que estén definidos:

    public interface ITareasService { IEnumerable<Tarea> Get(); Task Save(Tarea tarea); Task Update(Guid id, Tarea tarea); Task Delete(Guid id); }

    Y ya con eso queda el archivo de TareaController:

    using Microsoft.AspNetCore.Mvc; using webapi.Models; using webapi.Services; namespace webapi.Controllers; [Route("/api/[controller]")] public class TareaController : ControllerBase { protected readonly ITareasService _tareasService; public TareaController(ITareasService service) { _tareasService = service; } [HttpGet] public IActionResult Get() { return Ok(_tareasService.Get()); } [HttpPost] public IActionResult Post([FromBody] Tarea tarea) { _tareasService.Save(tarea); return Ok("Tarea creada"); } [HttpPut("{id}")] public IActionResult Put(Guid id, [FromBody] Tarea tarea) { _tareasService.Update(id, tarea); return Ok("Tarea actualizada"); } [HttpDelete("{id}")] public IActionResult Delete(Guid id) { _tareasService.Delete(id); return Ok("Tarea eliminada"); } }

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads