0

私たちはwcfsvcs(私たちのものではありません)を呼び出し、製品データベースの検索にgetsを使用しています。

例: http: //foo.com/SearchProducts.svc?$ skip = 0 $ take = 10 $ includeTotalCount = true

SearchProductssvcの結果をページングするためにOdataパラメーターを渡していました。フィルタ「skus」の1つが巨大な場合があり(数百のskus)、URIが大きすぎるためにGETが壊れるため、svcがPOSTに変更されました。私たちが考えた最も簡単な解決策は、呼び出しを投稿に変更することでしたが、現在はOdataパラメーターが使用されていないようです。

POSTを実行するときに、これらのパラメーターを別の方法で送信する必要がありますか?

4

1 に答える 1

1

準拠した OData サービスは、クエリの POST 動詞をサポートしません (ただし、POST トンネリングを使用しない限り、いずれにせよ URL 制限に達することになります)。それで、それがあなたにとってどのように機能するのだろうか。

URL サイズの制限は、いくつかの方法を使用して克服できます。

  • クエリ式を簡略化します。明らかにこれは限界ですが、クエリの実行も高速化される可能性が高いため、通常はこれが最適なソリューションです。
  • 代わりにバッチを使用してください。バッチ内で GET リクエストを送信できます。この場合、クエリ URL はバッチのペイロードで送信されるため、URL の長さは問題になりません。
  • 使用している複雑なクエリのサービス操作を定義します (ただし、サービスを所有していないため、これはおそらく良い解決策ではありません)。
于 2012-07-31T18:10:03.970 に答える