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
文書は現在、XML表現を持つCSDL形式です。 (あなたがformat
クエリトークンはそれの前に$
を持っていることを確認し、ODataのペイロードの異なる種類のJSONフォーマットを要求したいならば、サイドノートとして:。$format=json
)
ので、ノーそれはありません可能。ただし、$メタデータ文書のサブセットであるJSON、でサービス文書を取得することができます。
http://odata.informea.org/services/odata.svc?$format=json
これは、型情報を持っていないだろうが、それはサービスの利用可能エントリポイントが一覧表示されます(つまり、 、エンティティセット)。
私は以前の答えに同意しました。これは仕様ではサポートされていませんが、一部のODataフレームワーク/ライブラリはこの機能を実装しようとしています。
オリンゴについて考える。これは、サーバー側も実装している場合に役立ちます。詳細についてはOlingo JIRAでこの問題を参照してください。
あなたはまた、?$format=json
する代わりにティエリー・
、それはあなたを助けますことを願って次の2つのヘッダーを設定してください:
Accept: application/json
Content-Type: application/json; charset=utf-8
私は必要最低限のODataバージョンであるわからないんだけど、これはODATAのV4を使用してのMicrosoft Dynamics NAV 2016、上の私のために完璧に動作します。
jQueryを使用して、ODataサービス$ metadataから関連情報を取得できます。
例:
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);
}
});