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



据我所知。每次webapi请求发送到服务器时,都会进行身份验证。我的应用程序使用WebAPI 2, Identity 2和get方法,如:

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

这些调用的存在是为了获取页的数据。

如果webapi对每个请求都进行身份验证,那么我应该考虑如何将所有这些请求合并为一个吗?

如果webapi对每个请求都进行身份验证,那么我应该考虑如何将所有这些请求合并为一个吗?

怎么了,有什么麻烦吗?

你当然可以像这样定义并返回一个类:

public class CityData
{
    public List<CityStatus> StatusList { get; set; }
    public List<CityType> TypeList { get; set; }
    public List<CityOption> OptionList { get; set; }
}

为您的城市创建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);

要直接解决这个问题—是的,它每次都对您的应用程序进行身份验证。然而,在标准web应用程序的规模上,这一次你甚至不用担心它是微不足道的。

将这些路由合并为一个可能是一个好主意,不是因为身份验证必须多次发生,而是因为web请求可能只需要一段时间。通常,这是由于通过TCP/IP将信号从服务器物理发送到客户端所花费的时间(并重新发送以补偿任何丢失的数据包)。即使在并行处理请求时,更少的web请求也会更快。

话虽这么说,默认情况下,我会尽可能做最简单的事情,而不担心它。我刚才提到的是一个优化,应该这样对待,而不是过早地做。

至于认证?这只是你的网络请求的超级马拉松的几步,真的无关紧要。如果我错了,有人会纠正我,但我认为它通常甚至不会击中数据库-它所要做的就是解码以加密安全方式存储在身份验证cookie中的声明。

相关内容

  • 没有找到相关文章

最新更新