Consumiendo API desde Postman
Clase 6 de 22 • Curso de APIs con .NET
Contenido del curso
Clase 6 de 22 • Curso de APIs con .NET
Contenido del curso
Jurgen Robinston Elián Barrios Santizo
Juan Camilo Salazar Serna
Dolmar Velasquez
Randall Chacón Sarmiento
Ivan Ramos Sánchez
Samil Sanchez
Alonso Jimenez Cucanan
Elmer Alexander Gómez Cos
Brandon López Falfán
Alejandro Neri
Miguel Teheran
Laura Sofia Gonzalez Muñoz
José Ángel Soriano Soriano
Aldahir Emmanuel Ballina Núñez
Sabrina Sandí Quirós
Miguel Teheran
KEYSY MARIEL HERNANDEZ MANJARRES
Diego Alejandro Muñoz Arcos
Eduardo David Santiago Carrillo
Diego Alejandro Muñoz Arcos
Enrique Arce Alejandro
Miguel Teheran
John Breto
Miguel Teheran
John Breto
ignacio romero
Alonso Jimenez Cucanan
Angel Eduardo Trujillo Alvarado
Miguel Teheran
Facundo Oubel
Miguel Teheran
Jorge Alejandro Huerfano Rodriguez
Nicolas Vergara
Miguel Velarde
Miguel Teheran
Victor Hugo Montalvan Alegría
Miguel Teheran
Para los que no les salga la carpeta Controllers tienen que ejecutar el comando de la siguiente manera:
dotnet new webapi --use-controllers
Muchas gracias bro (eres lo mejor), pensé que iba a tener que acomodar todo manualmente para seguir con el curso.
Me imagino que en la versión de profe de .net que es la 6, eso lo tiene por defecto.
y yo estoy con la 8
Excelente, andaba buscando si alguien ya lo había colocado en los coments. tks.
Aca un poco de info de Stackoverflow https://stackoverflow.com/questions/77700061/why-is-dotnet-new-webapi-command-not-producing-the-controllers-folder
Aca la documentacion de Microsoft de los templates https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-new-sdk-templates#webapi
Aquí les dejo la URL solo le cambian el puerto :)
https://localhost:7205/WeatherForecast/
Si previamente tenían proyectos de netCore con https o IIS es muy probable que tengan problemas con los certificados. Si están obteniendo este error: Microsoft.AspNetCore.Server.Kestrel[0] Unable to configure HTTPS endpoint.
Toca limpiar los certificados anteriores y renovarlos nuevamente:
dotnet dev-certs https --clean dotnet dev-certs https -t
Si el problema persiste, al menos en windows ejecuten la herramienta de certificados y eliminen todos los que digan localhost de la carpeta "Personal" y la carpeta "Entidades de certificación raíz de confianza"
Gracias esto me ayudo mucho
Si siguen teniendo un error similar, y no se corrige con este aporte, les recomiendo revisar el lauchSettings.json, y en "profiles" dejar unicamente la opcion para https.
Para los que tienen error en Postman " Could not get response". Deshabiliten esta opcion.
Para hacer uso de Postman es muy fácil:
En mi caso tuve conflicto al seguir el ejemplo del video ya que no existía un alcance a mi servidor local. Lo que hice fue descargarme la aplicación de postman, una vez ejecutada la aplicación inicié sesión y nuevamente abrí un nuevo workbench, introduje la URL con su verbo GET y listo ya obtuve respuesta a mi petición.
¿Cómo supo que el endpoint es /weatherforecast? viniendo de express me confunde que no se aparezca literalmente esta palabra. Solo aparece GetWeatherForecast o WeatherForecastController. Entonces ¿ese /weatherforecast lo toma del GetWeatherForecast eliminando el verbo, o del WeatherForecastController eliminando el "Controller"?
Hola Alejandro lo toma del controlador, para identificar mejor los elementos los controladores tienen la palabra Controller al final pero las rutas por defecto toman su nombre con esa palabra.
En caso de que aparezca el error " Could not get response", verifica si el proyecto si está corriendo
les recomiendo esta extension es para cualquier navegador, pero te da hermoso el json
JSON Beautifier & Editor
Mostrar los objetos JSON transformándolos en HTML resaltado y editable por sintaxis para validarlos, formatearlos y guardarlos.
Si estas presentando problemas al querer ejecutar el API respecto a que no te aparece el puerto https, te recomiendo seguir estos pasos:
Para este punto deberian aparecer los dos puertos, el https y el http. Da ctrl + clic en el que desees,, deberia abrir el navegador de tu preferencia y marcar un error como este:
Lo que debes hacer es agregar lo siguiente al final del puerto :
/swagger
y con eso deberia cargar el API.
Esto me funciono a mi, talvez te pueda ser util. :)
Puse el link en postman desde la pagina web y desde la aplicacion y solo este error me da "Could not get response"
https://localhost:7209/WeatherForecast
No se si hay que hacer algo adicional para que funcione
Que metódo seleccioanste? debe se un GET pues es el que viene por defecto. También segurate que el serbvicio este corriendo
mismo problema. y seleccione el metodo get. y nada :(
En .NET 9 el template webapi cambió su comportamiento por defecto.
Ahora crea una Minimal API, por lo que ya no genera automáticamente la carpeta Controllers.
Sin embargo, todavía es posible crear el proyecto con el modelo tradicional basado en Controllers utilizando el siguiente comando:
dotnet new webapi -controllers --force
Esto ocurre porque en .NET 6 en adelante el template webapi por defecto crea Minimal APIs.
El flag -controllers fuerza el modelo tradicional MVC basado en controllers.
Tambien se deebe tener en cuenta que el template nuevo no trae interfaz Swagger UI por defecto, solo genera el JSON OpenAPI.
Si quieres Swagger UI (como el clásico /swagger visual), deben realizar una instalación de un paquete y configurar un poco el Program.cs aunque por el momento y hasta este capitulo me funciono bien, espero que siga asi.
Cambio totalmente en .NET9 ya no tiene Controller.
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.// Learn more about configuring OpenAPI at );
var app = builder.Build();
// Configure the HTTP request pipeline.if (app.Environment.IsDevelopment()){ app.MapOpenApi();}
app.UseHttpsRedirection();
var summaries = new[]{ "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"};
app.MapGet("/weatherforecast", () =>{ var forecast = Enumerable.Range(1, 5).Select(index => new WeatherForecast ( DateOnly.FromDateTime(DateTime.Now.AddDays(index)), Random.Shared.Next(-20, 55), summaries[Random.Shared.Next(summaries.Length)] )) .ToArray(); return forecast;}).WithName("GetWeatherForecast");
app.Run();
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary){ public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);}
Es verdad, aunque aun es posible forzar la instalacion que incluye Controllers utilizando el comendo:
dotnet new webapi -controllers --force
Esto ocurre porque en .NET 6+ el template webapi por defecto crea Minimal APIs.
El flag -controllers fuerza el modelo tradicional MVC basado en controllers.
Tambien se deebe tener en cuenta que el template nuevo no trae interfaz Swagger UI por defecto, solo genera el JSON OpenAPI.
Si quieres Swagger UI (como el clásico /swagger visual), deben realizar una instalación de un paquete y configurar algunas lineas del Program.cs aunque por el momento y hasta este capitulo me funciono bien, espero que siga asi.
Tengo un problema, a mi no me sale el puerto https, solo me sale el puerto http
intenta instalar los certificados puede que esten invalidos https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-dev-certs
Bueno, primera ocasion que consulto en la comunidad. Cuando invoco el comando dotnet run, compila correcto, devuleve la url pero luego muestra la siguiente mensaje:
warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3] Failed to determine the https port for redirect.
Entiendo que basicamente no esta pudiendo redirigir a https, probe las siguientes opciones sin exito.
Verifique la existencia de un certificado de confianza usando el comando dotnet dev-certs https. Luego de la ejecucion devuelve que existe un certificado.
A pesar de existir limpie los certificados y lo regenere como lo sugiere uno de los compañeros.
Agregue el puerto para https en el launchSettings.json.
Elimine del mismo launchSettings.json el profile https.
Como mencione, ninguna de estas opciones me permite levantar la webapi.
La documentacion oficial de Microsoft a mi en lo particular me parece densa y muy generica.
Espero alguien pueda aporta alguna otra sugerencia.
De antemanos muchas gracias.
Saluds.
Intenta estas otras opciones:
Gracias profe, pude seguir avanzando.
No me sale https y tengo los certificados validos.
En el lauchSettings.json, revisa en "profiles", tendras ambos el de http y https, borra el de http e intenta de nuevo.
Cuando hago la petición desde postman no me responde nada (ningun status code), probe un par de soluciones que mencionaron en los comentarios pero sigue sin funcionar. ¿Alguien sabe como lo puedo solucionar?
Revisa que el servicio si se este ejecutando y no tengas algunas configuración extraña en postman, no deberia tener ningun problema. también si pudes compartir un pantallazo para verificar el por que esta así.
Cuando quiero pegarle al puerto con le get desde insomnia me tira este error: error ssl peer certificate or ssh remote key was not ok
Puede que el certificado no este funcionando correctamente puedes intentar usando HTTP en lugar de HTTPs
Tengo el mismo problema y con ninguno de los dos funciona
Para aquellos que estan usando Insomnia y reciben este error:
"Error: SSL peer certificate or SSH remote key was not OK"
Les recomiendo no modificar nada en insomnia (en caso de que lo usen para trabajo real) y empiecen a usar postman o Thunder Client (extension de VS). El error no tiene nada que ver con el proyecto y esta mas relacionado con la configuracion de los certificados de insomnia, recueden que el proyecto corre en un puerto local host bajo https e insomnia lo rechaza por defecto.
Cuando ejecuto el comando dotnet run, solo me muestra la URL de http y no me muestra la URL de https ¿hay algo que necesite configurar para esto?
REvisa el archivo lunchsettings y tal cual como esta la de http le crear una para https personalizada
cuando cree el proyecto no me apareció la carpeta Bin ni la carpeta controller, que hago?
Utilizaste un template basio es importante usar el de WebApi