给定一个已知的OData端点,如何确定OData服务的版本是最好的方式?在这种情况下,客户端可以支持任何版本(1-4),但我需要知道如何格式化请求。
例如,对于V4服务,“OData-Version”返回“4.0”,但V3服务甚至没有该标头。
此外,查询服务根URL可能对具有大量实体的服务非常昂贵。例如,没有自定义对象的基本Dynamics 2016 Online服务返回2.7KB的数据,而我真正想要的只是版本标头。
那么,获取可靠版本号的最轻量级解决方案是什么?如果解决方案是“检查这个或者如果缺少,则检查那个”,那么也可以。是什么“这个”和“那个”?
我发现了一个问题(如何从元数据中找到OData版本),它在某种程度上帮助了我,但是答案有一些问题。
首先,它专注于查找最小/最大版本号,而我真正想要的是最大版本号。
其次,它需要查询元数据,但这可能会导致大量负载。在Dynamics CRM 2016 Online上,/$metadata会得到一个3.7MB的响应(在我的当前连接上需要30秒才能下载)。我考虑请求一个虚拟实体,比如/dummy__entity,然后检查头部信息,但我觉得这有点靠不住,因为这会在服务器上不必要地触发错误日志,并且我不确定错误响应总是有我要找的头信息。
例如,对于V4服务,“OData-Version”返回“4.0”,但V3服务甚至没有该标头。
此外,查询服务根URL可能对具有大量实体的服务非常昂贵。例如,没有自定义对象的基本Dynamics 2016 Online服务返回2.7KB的数据,而我真正想要的只是版本标头。
那么,获取可靠版本号的最轻量级解决方案是什么?如果解决方案是“检查这个或者如果缺少,则检查那个”,那么也可以。是什么“这个”和“那个”?
我发现了一个问题(如何从元数据中找到OData版本),它在某种程度上帮助了我,但是答案有一些问题。
首先,它专注于查找最小/最大版本号,而我真正想要的是最大版本号。
其次,它需要查询元数据,但这可能会导致大量负载。在Dynamics CRM 2016 Online上,/$metadata会得到一个3.7MB的响应(在我的当前连接上需要30秒才能下载)。我考虑请求一个虚拟实体,比如/dummy__entity,然后检查头部信息,但我觉得这有点靠不住,因为这会在服务器上不必要地触发错误日志,并且我不确定错误响应总是有我要找的头信息。