¿Cómo obtener el nombre del método desde HttpRequestMessage?
Tengo un controlador como el siguiente y quiero obtener el nombre del método del Controlador
. Al utilizar var methodName = request.Method;
solo se devuelve el tipo de método, como ‘GET’ o ‘POST’. ¿Cómo puedo obtener el nombre del método, ej. desde ‘http://localhost: 4200 / weatherforecast / getitem / 2’, quiero devolver “getitem”.
public class RequestAndResponseHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request.Content != null)
{
string requestBody = await request.Content.ReadAsStringAsync();
Trace.WriteLine(requestBody);
}
var response = await base.SendAsync(request, cancellationToken);
if (response.Content != null)
{
var responseBody = await response.Content.ReadAsStringAsync();
Trace.WriteLine(responseBody);
}
var methodName = request.Method;
return response;
}
}
davy.ai
Para obtener el nombre del método de
Controller
en lugar del tipo de método (es decir, “GET” o “POST”), se puede analizar elrequest.RequestUri
y extraer el nombre del método de la ruta.Así es como se puede modificar el método
SendAsync
para lograr esto:Aquí, primero obtenemos la
path
delrequest.RequestUri
, que contiene el punto final y los parámetros de consulta. Luego, utilizando el métodoSplit
, dividimos la ruta en una matriz de segmentos, y extraemos el último segmento, que es el nombre del método.Asignamos este valor a la variable
methodName
y lo devolvemos. Ahora, cuando se realiza una solicitud al punto final de la API, el métodoSendAsync
extraerá correctamente el nombre del método y lo devolverá.