Учитывая известную конечную точку OData, какой лучший способ определить версию службы OData? Клиент в этом сценарии может поддерживать любую версию (1-4), но мне нужно знать, как отформатировать запрос.
Например, OData-Version
возвращает "4.0" для службы V4, но служба V3 даже не имеет этого заголовка.
Кроме того, запрос корневого URL-адреса службы может быть довольно дорогостоящим для службы с большим количеством объектов. Для примера базовая служба Dynamics 2016 Online без каких-либо настраиваемых объектов возвращает 2.7 Кбайт данных, когда все, что мне действительно нужно, это заголовок версии.
Так что же самое легкое решение для получения надежного номера версии? Это нормально, если решение "проверьте это или, если оно отсутствует, тогда проверьте это". Что означает "this" и "that"?
Я нашел один вопрос (Как найти версию OData из метаданных), который, как мне кажется, частично отчасти отчасти, но есть некоторые проблемы с ответом.
Во-первых, он сосредоточился на поиске номеров мин/макс, где я бы предпочел максимум.
Во-вторых, для этого требуется запросить метаданные, но это потенциально массивная загрузка. /$metadata
в Dynamics CRM 2016 Online дает ответ на 3,7 МБ (для загрузки моего текущего подключения требуется 30 секунд). Я подумал о том, чтобы запросить фиктивный объект, например /dummy__entity
, а затем изучить заголовки, но для меня это немного похоже, потому что он излишне запускает ведение журнала ошибок на сервере, и я не уверен, что ответ на ошибку всегда будет есть заголовки, которые я ищу.