如何在MVC API中覆盖OData查询
本文关键字:覆盖 OData 查询 API MVC | 更新日期: 2023-09-27 17:54:30
我试图覆盖OData查询..
我想升级我的应用程序。
旧应用程序像这样获取User对象:
http://localhost:12345/api/users/?$filter=userName eq 'test'
http://localhost:12345/api/users/?userName=test
我想支持旧的应用程序,并覆盖OData查询?$filter=...
通过重写,我可以使用新方法并返回正确的User对象。
是否有一种方法来覆盖OData查询?
p。S:我需要保留$top &;
谢谢! !
WCF DS没有提供这样做的方法。但是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模块做很多事情。