CursosEmpresasBlogLiveConfPrecios

Atributos para verbos HTTP

Clase 8 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
    Marcos Avila Rodriguez

    Marcos Avila Rodriguez

    student•
    hace 4 años

    Si no quieres usar otra app para probar el api. Te recomiendo la extensión Thunder Client de Ranga Vadhineni. De esta forma solo necesitaras VSCode.

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      buena alternativa

      Mauricio Carrasco

      Mauricio Carrasco

      student•
      hace 2 años

      No conocía esa, pero suena interesante, yo uso REST Client y ya me acostumbré :D

    Jose Antonio Diaz Urbano

    Jose Antonio Diaz Urbano

    student•
    hace 3 años

    Tengo la sensación de que estoy copiando código sin que me estén explicando del todo qué estoy haciendo. Hay muchas cosas dentro del código que estamos manejando que no se han explicado en los cursos anteriores y en lo que llevamos de este tampoco. A mi parecer todo es demasiado abstracto si nunca has estado ligado al mundo backend.

    Otra cosa más es que después de muchos cursos en la ruta de backend con c# y .NET tengo la sensación de que no sería capaz ahora mismo de crear nada que pudiera ser de utilidad en un proyecto o que se parezca mínimamente a un proyecto real. Incluso con los cursos de iniciación recuerdo que me preguntaba bastante "y esto para qué me va a servir?"

    Aun no tengo claro si todo el esfuerzo está mereciendo la pena...

    PD: en todos los cursos veo muchísima gente en los comentarios comentando cosas avanzadas, como si ya vinieran de otros lenguajes de backend o incluso personas que saben C# y vienen a asentar bases. Entiendo que para ellos les pueda resultar más fácil entender las cosas pero no se si alguien como yo que venía con 0 conocimientos en POO y backend en general le merece mucho la pena

      Luis Covarrubias

      Luis Covarrubias

      student•
      hace 3 años

      Entiendo tu sentir, yo también pase por lo mismo cuando me adentre al mundo del desarrollo. Y vas a seguir sintiendo que nada de esto es práctico hasta que te enfrentes a un proyecto real, hasta ese momento todas estas clases tendrán sentido. Mi recomendación es que termines la ruta de aprendizaje y luego ya comiences con un proyecto real; tal vez desarrollando algún crud o un blog. Esa sería mi humilde recomendación.

      Jose Ignacio Hernandez Villafuerte

      Jose Ignacio Hernandez Villafuerte

      student•
      hace 2 años

      Es verdad

    Marcos Lanuza

    Marcos Lanuza

    student•
    hace 3 años

    Una forma sencilla para evitar que se introduzca un ID que esté fuera del rango de la lista:

    [HttpDelete("{index}")] public IActionResult Delete(int index) { if (ListWeatherForecast.Count < index) { return BadRequest("The given ID is out of bounds."); } ListWeatherForecast.RemoveAt(index); return Ok("Forecast was successfully removed."); }
      Jose Elias Cruz Perez

      Jose Elias Cruz Perez

      student•
      hace 3 años

      could you update this line: if (ListWeatherForecast.Count <= index)

    Platzi Team

    Platzi Team

    student•
    hace 3 años

    Atributos para verbos HTTP


    En ***.NET***, puedes usar atributos para especificar qué verbo HTTP se debe usar para un método en un controlador de API. Aquí hay algunos de los atributos más comunes:

    1. HttpGet: Este atributo se usa para indicar que un método en el controlador debe responder a las solicitudes HTTP GET. Por ejemplo, si quieres obtener un recurso, puedes enviar una solicitud GET a la API.
    2. HttpPost: Este atributo se usa para indicar que un método en el controlador debe responder a las solicitudes HTTP POST. Por ejemplo, si quieres crear un nuevo recurso, puedes enviar una solicitud POST a la API.
    3. HttpPut: Este atributo se usa para indicar que un método en el controlador debe responder a las solicitudes HTTP PUT. Por ejemplo, si quieres actualizar un recurso existente, puedes enviar una solicitud PUT a la API.
    4. HttpDelete: Este atributo se usa para indicar que un método en el controlador debe responder a las solicitudes HTTP DELETE. Por ejemplo, si quieres eliminar un recurso existente, puedes enviar una solicitud DELETE a la API.
    [HttpDelete("{index}")] public IActionResult Delete(int index){ ListWeatherForecast.RemoveAt(index); return Ok(); }
    • El atributo HttpDelete especifica que este método responde a las solicitudes HTTP DELETE. Además, la ruta especificada en el atributo ({index}) indica que la posición del elemento a eliminar se pasa como un parámetro en la URL.
    • Por ejemplo, si la lista de pronósticos del tiempo tiene un elemento en la posición 3, puedes enviar una solicitud DELETE a /api/weatherforecast/3 para eliminar ese elemento.
    • El método devuelve un resultado de acción (IActionResult) que indica el resultado de la acción que se realizó. En este caso, se devuelve un resultado de acción Ok que indica que la acción se realizó correctamente y no hubo ningún error
    Elmer Alexander Gómez Cos

    Elmer Alexander Gómez Cos

    student•
    hace 3 años

    Para los que estén utilizando visual studio, en el verbo Get viene creado el método que el instructor creo por aparte y cuando se intenta ingresar datos en postman en teoría se ingresan pero nunca se visualizan, a un inicio pensé que seria por el .ToList(); que utiliza el instructor y en el método que crea por default visual studio viene .ToArray(), los cambie a manera de ponerlos igual e intente insertar y lo mismo en teoría se inserto pero cuando iba a visualizar no aparecían.

    Mi solución fue volarme el método que me crea visual studio en el GET y adaptarlo tal cual como lo tiene el instructor.

    para que se ubiquen mejor, les dejo esta imagen de referencia.

    solucion2.png

    Asi tendria que quedar.

    solucion3.png
    Brandon López Falfán

    Brandon López Falfán

    student•
    hace 4 años

    Si te ocasionó algún conflicto el código a la hora de compilar tu proyecto, quizás se deba al uso de Random:

    TemperatureC = Random.Shared.Next(-20, 55),

    Random.Shared es exclusivo para .Net 6 y muy posiblemente tengas una versión de net core inferior a la 6.

    Para una pronta solución y probar tu ejemplo puedes copiar el siguiente bloque y sustituirlo donde debe:

    public WeatherForecastController(ILogger<WeatherForecastController> logger) { _logger = logger; var random = new Random(); if(ListWeatherForecast == null || !ListWeatherForecast.Any()) { ListWeatherForecast = Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = random.Next(-20, 55), Summary = Summaries[random.Next(Summaries.Length)] }) .ToList(); } }

    Donde hemos instanciado un objeto Random a una variable que va a sustituir a .Shared previamente a la asignación de valores de nuestra lista y así evitarnos un error al compilar.

    Edinson Jesús Paternina Rivera

    Edinson Jesús Paternina Rivera

    student•
    hace 3 años

    Excelente explicacion, aunque se deberia ahondar mas en los tipos de respuestas de IActionResult

    Charly Johan Manrique Gómez

    Charly Johan Manrique Gómez

    student•
    hace 3 años

    buena noche, con que teclas se detiene la ejecución en visual studio code ?

      Esteban Vallejos

      Esteban Vallejos

      student•
      hace 3 años

      Ctrl + C

    Fernando Sanchez

    Fernando Sanchez

    student•
    hace 3 años

    IActionResult ... Ok(); por que de esa forma ?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      IActionResult es una interfaz generica que me permite devolver multiples respuestas http. Ok se devuelve cuando la operación fue exitosa y se puede incluir un cuerpo en el mensaje.

      también puedes devolver BadRequest(), NotFound() y este tipo de resultados de acuerdo al escenario e igualmente en el tipo de respuesta seria IActionResult esa es la ventaja de usar esa interfaz generica

    Diego Fernando Pallares Ramirez

    Diego Fernando Pallares Ramirez

    student•
    hace 3 años

    No se si a alguien mas le pase pero, cuando hago Get de primera solo muestra las llaves [], cuando hago el post y luego el Get ahy si muestra información, y el get siempre me vota datos aleatorios y siempre 5, si elimino sale que se ejecuto pero al mirar todos los datos cambiaron y me aparece 5 datos aleatorios nuevamente, y cuando hago post y miro con el get no se me agrega un 6 dato.

      Diego Fernando Pallares Ramirez

      Diego Fernando Pallares Ramirez

      student•
      hace 3 años

      ya vi mi error por si ha alguien mas le ha pasado, era porque no estaba negado la condición del if con el sigo !

      !ListWeatherForecast.Any()

    JUAN PABLO MAYORGA MENDIETA

    JUAN PABLO MAYORGA MENDIETA

    student•
    hace 2 años

    Siendo honesto me parece que esta nueva interfaz va muy bien. Sin embargo, me parece que los comentarios deberian seguir llevando una marac de tiempo, con eso sabemos cuanto tiempo aproximadamente lleva el curso. Es un tema de transparencia por parte de platzi, hay cursos muy buenos como este que pueden tener muvha vigencia pero otros muy antiguos que deben ser actualizados. Considero que platzi deber consiente de eso

    FELIX EVR

    FELIX EVR

    student•
    hace 2 años

    ¿Que hace esta línea de código?:

    private readonly ILogger<WeatherForecastController> _logger;

    Esta línea declara una propiedad miembro privada llamada _logger. Esta variable es del tipo ILogger<WeatherForecastController>.

    El tipo ILogger<T> es una interfaz proporcionada por el framework ASP.NET Core para registrar mensajes de registro (logs) en la aplicación. En este caso, ILogger<WeatherForecastController> indica que esta instancia particular del logger está asociada con la clase WeatherForecastController.

    El objetivo principal de tener esta instancia de logger es permitir que el controlador WeatherForecastController registre mensajes de registro (logs) mientras maneja las solicitudes HTTP.

    Daniel Andrés Pinto Ortega

    Daniel Andrés Pinto Ortega

    student•
    hace 3 años

    Verbos HTTP:

    Get Post Delete Put Patch

    Cristina Tinoco

    Cristina Tinoco

    student•
    hace 3 años

    Hola. ¿Cuál es la función que cumple el atributo Name? Muchas gracias.

    [HttpGet(Name = "GetWeatherForecast")]
      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Especifica el nombre del endpoint, normalmente es el nombre del método

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Permite colocarle un nombre especifico al endpoint al momento de ser llamado

    Luis Eduardo

    Luis Eduardo

    student•
    hace 3 años

    Que significa Ilogger?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      la I se utiliza para indicar Interface. respecto al concepto de log o logging puedes revisar esta documentación: https://es.wikipedia.org/wiki/Log_(inform%C3%A1tica)

    JOSE CATAGUA

    JOSE CATAGUA

    student•
    hace 3 años

    cuando intento el POST en postman me sale esto en el termmina "Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3] Failed to determine the https port for redirect."

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Intenta eliminando este middleware: app.UseHttpsRedirection();

      Y también instalando los certificados usando este comando: dotnet dev-certs https --trust

    Juan David Rodriguez Triana

    Juan David Rodriguez Triana

    student•
    hace 3 años

    Buenos dias, como puedo tambien recibir en el post un json, en dado caso de que desde una peticion post desde el front vengan varios registros? estuve leyendo y tiene algo que ver con serizalizar la respuesta, como se puede agregar eso en .net?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Debes indicar que vas a mandar un string que incluye el Json, luego puedes usar la librería NewtonSoft.Json o System.Text.Json para realizar al serialización de manera manual. Puedes crear una clase como

      public class DataJson { public string Data {get;set;} }

    Caffè Latte

    Caffè Latte

    student•
    hace 3 años

    Una pregunta, en la documentación oficial de Microsoft para hacer APIs con Controladores utiliza métodos asíncronos con el async/await y Task, ¿Es recomendado utilizar esto en vez de los métodos síncronos actuales?

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 3 años

      Si totalmente, lo ideal siempre usar el async y el await

    José Ángel Soriano Soriano

    José Ángel Soriano Soriano

    student•
    hace 4 años

    Al compilarlo en VCode con el comando dotnet run, me genera el sig. erro lo cierro me voy a visual studio no me genera ningun problema...

    Compilando... C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 1 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 2 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 4 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 5 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 6 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 7 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 8 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 9 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 10 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): error MSB3027: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se superó el número de 10 reintentos. Error. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): error MSB3021: No se puede copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] PS C:\platzi\webapi> dotnet run Compilando... C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 1 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 2 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 3 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 4 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 5 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 6 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 7 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 8 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 9 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 10 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): error MSB3027: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se superó el número de 10 reintentos. Error. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): error MSB3021: No se puede copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj]

    No se pudo llevar a cabo la compilación. Corrija los errores de compilación y vuelva a ejecutar el proyecto.

      Miguel Teheran

      Miguel Teheran

      teacher•
      hace 4 años

      Este error ocurre cuando la aplicación esta amarrada por otro proceso. puede ser que tengas Visual Studio corriendo con la App o que tengas una terminal abierta y no la has cerrado. Si no encuentra donde esta la App ejecutandose entonces puede reiniciar el PC e intentar de nuevo con dotnet run

    Alvaro Augusto Perea Ospina

    Alvaro Augusto Perea Ospina

    student•
    hace 2 años

    Para esta clase en especifico, el profesor deberia aclarar que en el controlador "WeatherForecast" el tipo de dato Date es DateOnly.

    Deberia aclarar que en el constructor se debe cambiar de DateOnly, a DateTime para no sacar errores.

      Christian Chancay

      Christian Chancay

      student•
      hace 7 meses

      if(ListWeatherForecast == null || !ListWeatherForecast.Any())        {                 ListWeatherForecast = Enumerable.Range(1, 5).Select(index => new WeatherForecast                {                                       Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), // Usamos DateOnly                    TemperatureC = Random.Shared.Next(-20, 55),                    Summary = Summaries[Random.Shared.Next(Summaries.Length)]                                                })                .ToList();                             }

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