从端点获取参数以及控制器和操作名称
Get Parameters along with controller and action name from endpoint
我有一个接收 id
的 HttpGet 端点。我已经弄清楚如何获取控制器和操作名称,但我还想获取端点中使用的参数,因为我希望能够将它们与普通的默认 GET 区分开来。
这是我想要的端点和示例:
// GET: api/PatientSearch/5
[HttpGet("{id}", Name = "Get")]
public string Get(int id)
{
_customLogger.LogInfoEvent(this.ControllerContext.RouteData.Values["controller"].ToString(), this.ControllerContext.RouteData.Values["action"].ToString());
return "value";
}
这目前有效并将操作记录为 'Get' 但 id' 喜欢它记录为 'Get {id}'
var q = ControllerContext.RouteData.Values["id"];
或
var q = id;
// GET: api/PatientSearch/5
[HttpGet("{id}", Name = "Get")]
public string Get(int id)
{
var parameters = MethodBase.GetCurrentMethod().GetParameters();
var paramNames = String.Join(", ", parameters.Select(p => p.Name)); // myString, myInt
return this.ControllerContext.RouteData.Values["action"] + "{"+ paramNames + "}";
}
测试结果截图:
public string Get(int id)
public string Get(int id, string str)
我有一个接收 id
的 HttpGet 端点。我已经弄清楚如何获取控制器和操作名称,但我还想获取端点中使用的参数,因为我希望能够将它们与普通的默认 GET 区分开来。
这是我想要的端点和示例:
// GET: api/PatientSearch/5
[HttpGet("{id}", Name = "Get")]
public string Get(int id)
{
_customLogger.LogInfoEvent(this.ControllerContext.RouteData.Values["controller"].ToString(), this.ControllerContext.RouteData.Values["action"].ToString());
return "value";
}
这目前有效并将操作记录为 'Get' 但 id' 喜欢它记录为 'Get {id}'
var q = ControllerContext.RouteData.Values["id"];
或
var q = id;
// GET: api/PatientSearch/5
[HttpGet("{id}", Name = "Get")]
public string Get(int id)
{
var parameters = MethodBase.GetCurrentMethod().GetParameters();
var paramNames = String.Join(", ", parameters.Select(p => p.Name)); // myString, myInt
return this.ControllerContext.RouteData.Values["action"] + "{"+ paramNames + "}";
}
测试结果截图:
public string Get(int id)
public string Get(int id, string str)