0

ODataクエリをオーバーライドしようとしています。

アプリケーションをアップグレードしたい。

OLDアプリケーションは、次のようなUserオブジェクトを取得します。

http://localhost:12345/api/users/?$filter=userName eq 'test'

NEWアプリケーションは、次のようなUserオブジェクトを取得します。

http://localhost:12345/api/users/?userName=test

古いアプリケーションをサポートし、ODataクエリをオーバーライドしたい?$filter=...

オーバーライドを使用すると、新しいメソッドを使用して、適切なUserオブジェクトを返すことができます。

ODataクエリをオーバーライドする方法はありますか?

PS:$topと$orderbyODataクエリをそのままにしておく必要があります...

ありがとう!!

4

1 に答える 1

2

WCFDSはそれを行う方法を提供していません。ただし、IISは役に立ちます。

アイデアは、URL書き換えモジュールを使用して、URLを書き換えて必要なものに変更することです。たとえば、IISがuserNameを含む要求を受信すると、代わりに$filterを使用するように書き換えることを指定する必要があります。

<rewrite>
  <rules>
    <rule name="Compatibility with older versions" enabled="true" stopProcessing="true">
      <match url="^api/users/?$userName eq (.*)" />
      <action type="Rewrite" url="http://localhost:12345/api/users/?$filter={R:2}"/>
    </rule>
  </rules>
</rewrite>

もちろん、私はあなたのアプリケーションでそれをテストしませんでしたが、バージョンの互換性を維持するために私たちのプロジェクトでそれを行っています。

そのIISモジュールでできることはたくさんあるので、それについてもっと読む必要があります。

于 2013-01-26T22:36:42.123 に答える