据我了解。每次webapi请求进入服务器时,它都会进行身份验证。我的应用程序使用WebAPI 2,Identity 2并获得如下方法:
/api/cityStatusList
/api/cityTypeList
/api/cityOptionList
这些调用用于获取页面的数据。
如果webapi正在验证每个请求,那么我应该研究如何将所有这些请求合并为一个?
答案 0 :(得分:1)
如果webapi正在验证每个请求,那么我应该研究如何将所有这些请求合并为一个?
为什么,它会造成什么麻烦?
您当然可以定义并返回这样的类:
public class CityData
{
public List<CityStatus> StatusList { get; set; }
public List<CityType> TypeList { get; set; }
public List<CityOption> OptionList { get; set; }
}
答案 1 :(得分:0)
为您的城市创建CityView模型类,如下所示:
public class CityView
{
public List<cityStatusView> cityStatusList { get; set; }
public List<cityTypeView> cityTypeList { get; set; }
public List<cityOptionView> cityOptionList { get; set; }
}
public class cityStatusView
{
public int ID { get; set; }
}
public class cityTypeView
{
public int ID { get; set; }
}
public class cityOptionView
{
public int ID { get; set; }
}
使用它就像你的web api中的以下代码一样:
// View model
var cityStatusList=..;
var cityTypeList=..;
var cityOptionList=..;
CityView objVM = new CityView();
objVM.cityStatusList = cityStatusList;
objVM.cityTypeList = cityTypeList;
objVM.cityOptionList = cityOptionList;
return ActionContext.Request.CreateResponse(HttpStatusCode.OK, objVM);
答案 2 :(得分:0)
直接解决问题 - 是的,它每次都会验证您的应用程序。然而,在标准网络应用程序的规模上,这一次并不是你甚至担心它的微不足道。
将这些路由合并为一个可能是一个好主意,不是因为身份验证必须多次发生,而是因为Web请求可能需要一段时间。通常,这是由于通过TCP / IP将信号从服务器物理地发送到客户端所需的时间(并重新发送以补偿任何丢弃的数据包)。即使并行化请求,更少的Web请求也会更快。
话虽如此,默认情况下,我会做最简单的事情而不用担心。我刚刚提到的是优化,应该这样对待,而不是过早地完成。
验证?这只是你的网络请求超级马拉松的几个步骤,它确实无关紧要。如果我错了,有人会纠正我,但我不认为它通常会打到数据库 - 所有它必须做的就是解码以加密安全的方式存储在身份验证cookie中的声明。 / p>