Можно ли получить метаданные службы OData в формате JSON?
Когда я пытаюсь использовать format=json
, он не работает. Вот что я пробовал:
http://odata.informea.org/services/odata.svc/$metadata/?format=json
Можно ли получить метаданные службы OData в формате JSON?
Когда я пытаюсь использовать format=json
, он не работает. Вот что я пробовал:
http://odata.informea.org/services/odata.svc/$metadata/?format=json
Документ $metadata
находится в формате CSDL, который в настоящее время имеет только XML-представление. (В качестве примечания, если вы хотите запросить json-формат для другой полезной нагрузки OData, убедитесь, что токен format
имеет перед ним $
: $format=json
.)
Итак, нет, это невозможно. Однако вы можете получить служебный документ в JSON, который является подмножеством документа $metadata:
http://odata.informea.org/services/odata.svc?$format=json
Это не будет иметь информацию о типе, но в нем будут перечислены доступные точки входа службы (т.е. сущности).
Вы можете использовать jQuery для получения соответствующей информации из метаданных службы OData service.
Возьмем, например:
Вы пишете unit test, чтобы проверить, что имена свойств объектов OData совпадают с вашими сущностями приложения. Затем вы должны получить свойства объекта OData.
$.ajax({
type: "GET",
url: "/destinations/odata-service/$metadata",
beforeSend: function() {
console.log("before send check");
},
dataType: "xml",
contentType: "application/atom+xml",
context: document.body,
success: function(xml) {
console.log("Success ResourceTypes");
var ODataTypeINeed = $(xml).find('EntityType').filter(function(){
return $(this).attr('Name') == 'ODataTypeINeed'
});
$(ODataTypeINeed).find('Property').each(function() {
console.log($(this).attr('Name')); //List of OData Entity properties
});
},
error: function(err) {
console.log(err);
}
});
Я согласился с предыдущим ответом. Это не поддерживается спецификацией, но некоторые фреймворки/библиотеки OData собираются реализовать эту функцию.
Я думаю об Олинго. Это может быть полезно для вас, если вы также реализуете серверную сторону. См. Эту проблему в Olingo JIRA для получения дополнительной информации:
Надеюсь, это поможет вам, Thierry
В качестве альтернативы ?$format=json
вы также можете просто установить следующие два заголовка:
Accept: application/json
Content-Type: application/json; charset=utf-8
Я не уверен, какая минимальная версия Odata требуется, но это отлично работает для меня в Microsoft Dynamics NAV 2016, которая использует Odata v4.