問題タブ [odata-v4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Odata V4 クライアント: getEntityCreate メソッド
新しいエンティティを作成するために、Java で ODataClient を開発しました。新しいエンティティを作成する際に問題が発生しています。私は率先して、クライアントから送信されたすべてのメッセージを Fiddler で確認しました。
Fiddler で取得した本文の最初の行の下:
新しいエンティティを作成するために Fiddler で手動でテストしたところ、メッセージ本文の最初の行は次のようになります。
「@」と「#」を削除するために、Odata でリクエストのボディを設定できるかどうかを知りたいです。
ありがとう、
java - Olingo クライアントを使用した odata GET 呼び出しの特殊文字
Olingo 4.2 Java ライブラリを使用して OData サービスを呼び出しています。odata GET 呼び出しを行っており、パラメーターに www.example.com/service/People('abc}def{ghi') のような特殊文字が含まれています。Olingo クライアントを使用して OData 呼び出しをエンコードして行うと、エラー -
Geography はインスタンス化可能な型ではありません。エンティティは、プロパティを Geometry 型として宣言できます。エンティティのインスタンスは、Geometry タイプの値を持ってはなりません。各値は何らかのサブタイプでなければなりません。
ブラウザから実行すると正常に動作します。主キーに {} (中かっこ) を含めることは避けられません。これを修正する方法を知っている人はいますか?
json - Web Api 2 with OData v4 - 複合オブジェクトを返すバインドされた関数
この単純な例では、Web Api 2 + OData v4 サービスから JSON としてシリアル化されたオブジェクトを取得しようとしています。コントローラーには、annon の配列を返す関数 Test がバインドされています。オブジェクト。
Edm は次のコードで構築されています。
サービスにリクエストを送信すると (例: http://localhost:9010/odata/Products(33)/Default.Test )、次のような 2 つの空のオブジェクトの配列という奇妙な応答が返されます。
私の実際のアプリでは、Newtonsoft の Json コンバーターを使用して、JSON 文字列にシリアル化されたオブジェクトを返しています。これは正常に動作しますが、この問題は依然として私を悩ませています。OData の既定のシリアライザーに関連するものだと思われますが、構成方法がわかりません。
それで、正しくシリアル化された複雑なオブジェクトを取得するような方法で edm 関数の戻りパラメータを構成することは可能ですか?
ありがとう!
asp.net-web-api2 - OData V4 $expand ネストされた $filter と $orderby -- expand 内で $filter と $orderby を組み合わせる
現在、次のモデルを持つ OData V4 サービスがあります。
「カテゴリ」 -- 「コード」
各カテゴリには、多くのコードが存在する可能性があります。
コードを $expand し、Active = true の $filter を実行し、次に $orderby Codes.Description を実行する必要があります。
現在、以下は注文なしで正常に動作します。
odata/Categories?$expand=Codes($filter=Active eq true)
これは動作しません。
odata/Categories?$expand=コード($filter=アクティブ eq true&$orderby=説明)
「URI で指定されたクエリは無効です。12 番目の位置に構文エラーがあります。」というメッセージが表示されます。& "'Description)' の 12 番目の位置に構文エラーがあります。"
基本的には「Description」の後の最後の「)」をエラーとして読み込んでいます。
asp.net-web-api2 - 語彙注釈を使用してデータ注釈を渡す OData V4
最大文字列長などを定義するために、OData V4 のメタデータで語彙ベースの注釈を設定/読み取る方法を知っている人はいますか?
Client Annotation Supportという記事がありますが、サンプル コードは示されておらず、データ アノテーションについて話しているかどうかも 100% 確信が持てません。
次のようなコードがあります。
ただし、「fullQualifiedTermName」または「qualifier」に何を使用するかについては説明していません。
「odata.inculde-annotations=*」を追加していますが、役に立たないようです。
私も次のことを試しました。
しかし、それはnullを返すだけです。
検証メタデータのサポートについて説明している 2012 年の記事「WCF Data Services の語彙」を見つけました。
やってみます。
OData V4 でこれを行うための簡単でより良い方法があることを願っています。
更新 1
config.AnnotationsBuilder が System.Web.Http.HttpConfiguration にないため、WCF 語彙の例は OData V4 では機能しません。
OData V4 はhttp://www.odata.org/vocabularies/で定義されているように語彙をサポートしており、「メタデータ注釈は特定のプロパティの有効な値の範囲を定義する場合があります」という必要なものも提供していますが、サンプル コードはないようです。それを使用する SAP https://blogs.sap.com/2013/10/07/vocabulary-based-annotations/以外の記事。
更新 2 TripPinService
を
見た後、次のような予算に関する注釈があることに気付きました。
幸いなことに、そのプロジェクトのソース コードはODataSamples TripPin
です。サービスを調べたところ、まず独自の xml ボキャブラリ ファイルを作成する必要があることがわかりました。(ValidationVocabularies.xml)
WebApiConfig ファイルで、xml ファイルにアクセスし、ボキャブラリ アノテーションをメタデータに追加する必要があります。
ここでも、TripPin のソース コードにこのための優れたヘルパー クラスが含まれているという点で幸運でした。(以下のように修正しました)
次に、次のように GetEdmModel() メソッド内からこれを呼び出します。
文字列値ではなく名前でプロパティにアクセスする方法を誰かが知っていると便利です。
私は builder.EntityType().Property(p => p.FirstName) を試しましたが、その型は IEdmProperty ではありません。
とにかく先に進みます...
ブラウザを使用して $metadata にアクセスすると、FirstName の文字列の長さ属性がはっきりとわかります。
これは良いことですが、次の問題に移りましょう。クライアントからそれを取得する方法は?
さて、まずはやってみました。
しかし、それは私に次のエラーを与えます。
値を null にすることはできません。パラメータ名:要素それから私は試しました:
しかし、注釈は null です。
TryGetAnnotation を呼び出しても OData サービスが再度呼び出されないことに気付きました。
それで、クライアント側の CSDL ファイルを読む必要があると思ったので、WCF の記事を振り返りましたが、「注釈」コレクションをどこで入手したかはわかりません。
私はまだ掘り下げていますが、これは失われた原因になりつつあります。
Microsoft が OData をこのような優れたサービスとしてプッシュしたかったのは残念ですが、ドキュメントはほとんどなく、サポート グループも非常に小規模です。
未解決の OData に関する質問が 4 つあり、ヒットはほとんどありません。
誤解しないでほしいのですが、私は OData が大好きですが、これは好き嫌いの関係です。
更新 3
現在の回避策は、エンティティのように見える部分クラスを作成してから、データ注釈を含むインターフェイスを作成することです。
エンティティ フレームワークによって生成されたクラスにデータ アノテーションを追加する
asp.net-web-api - OData 関数のルーティング規則
私はしばらくの間 OData を研究してきましたが、解決策を見つけることができなかった特定の要件に直面しています。これは、スラッシュで囲まれたパラメーターを使用して OData の関数を呼び出すことです。つまり、これを達成する必要があります:/ entity/key/functionName/param1/param2/param3/ 使用してみましたが[RoutePrefix("/entity/{key}/functionName/{param1}/{param2}..."]
成功しませんでした。アクションは次のようでした。
を使用してこの結果が得られることを知っています[RoutePrefix("/entity({key}/functionName(param1={param1}....)
。しかし、これは私が望むものではありません。
それが達成可能かどうかは誰にもわかりませんか?
odata - Odata v4 - $expand の後に結果を平坦化
目的:オブジェクトを展開し、ネストされたプロパティを他のプロップと一緒にルート選択に投影します。
次の関係があります。
私はこれをもたらす投影をしたいと思います:
現在、私はこれを取得しています:
使用されるクエリは次のとおりです。
/odata/Product?$expand=Category($select=Name)&$select=Price
私はこのような投影を書くことを期待しています:
/odata/Product?$expand=Category&$select=Price,Category/Name as CategoryName
また
/odata/Product?$expand=Category&$select=Price,Category($select=Name as CategoryName)
また
/odata/Product?$expand=Category&$select=Price,Category($select=Name)
それは達成可能ですか?ありがとうございました!
PS OData V4.
asp.net-web-api2 - OData エラーの詳細の存在を制御する方法
Web API 2 OData v4 サービスからのエラー応答の詳細の存在を制御しようとしています。ローカル IIS でホストされている OData サービスにアクセスすると、次のような結果が得られます。
同じサービスをリモート サーバーにデプロイし、同じメッセージを表示すると、次のようになります。
サービスをリモートで呼び出しているため、「innererror」セクションと「details」セクションが抑制されていると思いますか? 「内部エラー」セクションが抑制されていることをうれしく思います。これらの詳細を漏らしたくはありませんが、「詳細」セクションを公開して、特定のエラーについてさらにフィードバックを提供できるようにしたいと考えています。これを達成する簡単な方法はありますか?
ありがとう!
asp.net-web-api - コレクション値のナビゲーション プロパティが空のリストと CRM 2016 WEB API の実際のデータへの参照リンクを返す理由
コレクション値のナビゲーション プロパティが常に実際のデータ リンクへの参照を含む空のリストを返す理由がわかりません。
ここに私が試したクエリがあります:
応答 :
参照 (new_product_new_subjectarea@odata.nextLink) に新しい要求を行わずに、ナビゲーション プロパティ (new_product_new_subjectarea) 内の項目を取得するにはどうすればよいですか?