当WebAPI向服务器发出请求时,是否存在很多身份验证开销?

时间:2014-05-12 10:12:05

标签: asp.net asp.net-web-api asp.net-identity asp.net-web-api2

据我了解。每次webapi请求进入服务器时,它都会进行身份验证。我的应用程序使用WebAPI 2,Identity 2并获得如下方法:

/api/cityStatusList
/api/cityTypeList
/api/cityOptionList

这些调用用于获取页面的数据。

如果webapi正在验证每个请求,那么我应该研究如何将所有这些请求合并为一个?

3 个答案:

答案 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>

相关问题