czy można uzyskać metadane usługi OData w formacie JSON?
Kiedy próbuję użyć format=json
, to nie działa. Oto, co starałem:
http://odata.informea.org/services/odata.svc/$metadata/?format=json
czy można uzyskać metadane usługi OData w formacie JSON?
Kiedy próbuję użyć format=json
, to nie działa. Oto, co starałem:
http://odata.informea.org/services/odata.svc/$metadata/?format=json
Dokument $metadata
jest w formacie CSDL, który obecnie ma tylko reprezentację XML. (Na marginesie, jeśli chcesz wystąpić o formacie JSON dla innego rodzaju OData ładowności, upewnij token format
kwerenda ma $
przed nim. $format=json
)
Tak więc, nie to nie jest możliwy. Można jednak uzyskać dokument serwisowa w JSON, który jest podzbiorem dokumentu $ metadanych:
http://odata.informea.org/services/odata.svc?$format=json
ten nie będzie miał informacje o typie, ale będzie to listę dostępnych punktów wejścia na usługi (tj , encja ustawia).
Zgadzam się z poprzednią odpowiedzią. Nie jest to obsługiwane w specyfikacji, ale niektóre struktury/biblioteki OData wkrótce wdrożą tę funkcję.
Myślę o Olingo. Może to być pomocne, jeśli wdrożysz stronę serwera. Zobacz tę kwestię na Olingo JIRA więcej szczegółów:
Nadzieję, że to pomaga, Thierry
Jako alternatywę dla ?$format=json
, można również po prostu ustaw następujące dwa nagłówki:
Accept: application/json
Content-Type: application/json; charset=utf-8
Nie jestem pewien, co jest minimalna wymagana wersja OData, ale to działa idealnie dla mnie na Microsoft Dynamics NAV 2016, który wykorzystuje OData v4.
Możesz użyć jQuery, aby uzyskać odpowiednie informacje z metadanych usługi OData $.
Weźmy na przykład:
Piszemy test jednostkowy, aby sprawdzić, czy nazwy właściwości encji OData są zgodne z twoimi jednostkami aplikacji. Następnie musisz pobrać właściwości encji 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);
}
});