Este comentario solo es para reconocer lo buena que estuvo esta clase y el buen docente que eres @Miguel Teheran, espero de verdad seguir viendo más cursos de tu parte.
Introducción a API en .NET
Domina las API con .NET
Prerrequisitos
¿Qué es una API?
¿Qué es REST?
Creando tu primera API con .NET
Funcionamiento de una API en .NET
Consumiendo API desde Postman
Análisis del template para APIs de .NET
Atributos para verbos HTTP
Manejo de rutas
Minimal API vs. Web API
Arquitectura y configuración
¿Qué son los middlewares?
Creando un nuevo middleware
Inyección de dependencias
Agregando Logging a API
Documentando API con Swagger
Manipulación de datos con Entity Framework
Agregando librerías para Entity Framework
Configuración de Entity framework y clases base
Creación de servicios
Inyectando servicios como dependencia
Creando controladores
Probando API con una base de datos SQL server
Outro
Retrospectiva: APIs con .NET
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 14
Preguntas 13
Este comentario solo es para reconocer lo buena que estuvo esta clase y el buen docente que eres @Miguel Teheran, espero de verdad seguir viendo más cursos de tu parte.
En el minuto 4:05 Miguel agrega todo el namespace para corregir un problema supuestamente porque se está tomando el tipo de datos equivocado, el problema era más sencillo … habia escrito “HttpContent” en lugar del correcto que era “HttpContext”
Se lanzó una excepción cuando cambié de orden la ejecución del siguiente middleware.
Lo solucioné colocando un simple return antes de que se ejecutara el siguiente:
public async Task Invoke (HttpContext context)
{
if(context.Request.Query.Any( p=> p.Key == "time"))
{
await context.Response.WriteAsync(DateTime.Now.ToShortTimeString());
return;
}
await next(context);
}
Si a alguien le pasa lo mismo, espero que esto les auide a solucionarlo c;
Es el curso más concreto y completo que he visto, sin tanta explicación de cosas que nada que ver
En mi caso no muestra solo la hora, a mi me muestra un error en la consola que dice:
The response has already started, the error page middleware will not be executed.
el response es 200 pero sin ningun valor de response
Hola, sinceramente vi tres veces esta clase y no entendi nada, se van mencionando conceptos que no tengo claros, en conclusión, no se que hizo. Alguien me puede hacer un resumen para seguir con el curso ? Gracias.
Excelente clase!!
Definitivamente pienso borrar este middleware porque me está generando más problemas que beneficios, pero fue genial poder entender el concepto de middleware de una forma tan sencilla
En mis palabras diría que los middlewares son procesos que se van realizando en cadena uno después del otro desde que empieza el request, hasta que se termina el proceso y se llega al endpoint que sería donde devolvemos datos al usuario
Hay que anotar que al parecer con la versión 7 se genera una excepción implementando el código como lo tenía. Por lo que tuve que dejarlo de la siguiente forma
public async Task Invoke(HttpContext context){
if(context.Request.Query.Any(p => p.Key == "time")){
await context.Response.WriteAsync(DateTime.Now.ToShortTimeString());
return;
}
await _next(context);
}
Middlewares
(Programas intermedios)
• La base de como funciona cada uno de los request.
• Es una serie de instrucciones de código que se agregan al ciclo de vida de una petición HTTP.
• Provee una ejecución de peticiones a través de capas.
• Facilitan la implementación de interceptores y filtros sobre las peticiones en una API.
• Es mucho más fácil ver la secuencia de comandos que se ejecutan por cada petición e implementar middleware personalizados (con código a demanda ) para interceptar algún request y agregar algún comportamiento adicional.
Middleware **página de bienvenida **
app.UseWelcomePage();
En este video hay dos conceptos. La creación de Middlewares y también la creación de extensiones. Muy buen ejemplo en poco código.
este curso esta excelente !!!
public class TimeMiddleware
{
private readonly RequestDelegate _next;
public TimeMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
await _next(context);
if (context.Request.Query.Any(x => x.Key == "time"))
{
await context.Response.WriteAsync(DateTime.Now.ToShortTimeString());
}
}
}
public static class TimeMiddlewareExtensions
{
public static IApplicationBuilder UseTimeMiddleware(this IApplicationBuilder builder)
{
return builder.UseMiddleware<TimeMiddleware>();
}
}
await _next(context);
en el código de un middleware se usa para continuar con la siguiente etapa en la cadena de middlewares. En otras palabras, esta línea permite que el control pase al siguiente middleware en la cadena para que pueda realizar su procesamiento.HttpContext
que se pasa como argumento a la función InvokeAsync
contiene información sobre la solicitud HTTP actual y la respuesta que se está construyendo. El argumento _next
es un delegado RequestDelegate
que representa la siguiente etapa en la cadena de middlewares.program.cs
. Esto se puede hacer llamando al método UseMiddleware y proporcionando una instancia de su clase de middleware personalizado.app.UseTimeMiddleware();
Excelente profesor
Excelente Clase @Miguel Teherán, espero muchos cursos de tu parte.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.