Asp.net mvc 从webapi2.1标头检索数据的正确方法
我已经创建了一个基本api控制器,允许我从标头访问数据Asp.net mvc 从webapi2.1标头检索数据的正确方法,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我已经创建了一个基本api控制器,允许我从标头访问数据 public virtual int GetHeaderData() { if (Request != null) { var headers = Request.Headers; int customValue; if (headers.Contains("mycustomvalue")) {
public virtual int GetHeaderData()
{
if (Request != null)
{
var headers = Request.Headers;
int customValue;
if (headers.Contains("mycustomvalue"))
{
int.TryParse(headers.GetValues("mycustomvalue").First(), out customValue);
return customValue;
}
}
throw new Exception();
}
因此,从任何控制器(如GetHeaderData()调用此函数都非常容易
然而,对我来说,这似乎很难按照助手的要求进行单元测试
请求.标题
我真的应该尝试在控制器级别读取标题值,还是应该在其他更容易测试的地方读取标题值
我正在寻找一个最好的方法,我应该做上述一点建议
我不想说这是一个建议,只是一个建议让你考虑。首先,单元测试不应该决定类的设计。可以在控制器级别设置请求对象,以便
request.Headers
正确返回头,以便进行单元测试。然而,如果我问自己这个方法是否属于控制器,答案是否定的,不管是否希望进行单元测试。如果要这样做,我宁愿为HttpRequestMessage
创建一个扩展方法。扩展方法只是一种语法糖,但它基本上是一种静态助手方法,我可以在任何地方使用扩展方法—控制器、消息处理程序、过滤器等等。然后,如果我愿意,我可以进行单元测试