Hace un tiempo, un cliente solicitó un requerimiento que trataba de “loguear” todas las solicitudes que reciba y todas las respuestas que emita un microservicio. Una manera simple de resolverlo dentro del framework net core, es utilzando un middleware (intercambio de información entre aplicaciones) personalizado porque permite abstraer y automatizar la funcionalidad.
¿Que es un middleware en un microservicio netcore? Es la secuencia de tareas (pipeline) que se ejecutan para procesar las solicitudes antes que estas lleguen al controlador”.
Ejemplos:
dotnet new webapi -o custom-middleware
Ejemplo de creación del middleware
La clase de ejemplo “RequestLogMiddleware” implementa la interfaz IMiddleware donde se debe implementar la firma
El middleware recibe por parámetro el request (context), desde donde se leen los atributos que se interesa loguear. Para el ejemplo se ha mantenido simple con WriteLine(), pero en el caso real, el log era enviado a un servicio externo. Es importante utilizar EnableBuffering() para restablecer el índice del buffer y permitir la posterior lectura del body.
El middleware debe ser configurado para su uso.
La configuración consiste en registrarlo como servicio en el contenedor de servicios de netcore y luego indicar que utilizará con la instrucción UseMiddleware(). Se utiliza la condición “StartsWithSegments("/api")” para filtrar solicitudes donde se desea utilizar el middleware.
El resultado tras la invocación de un post
Utilizar middleware permite que los desarrolladores conviertan las aplicaciones monolíticas heredadas en aplicaciones nativas, lo cual mantiene activas las herramientas importantes con un rendimiento mejorado.