【发布时间】:2018-03-29 14:21:15
【问题描述】:
我的应用程序的一部分需要充当第三方 RESTful Web 服务的代理服务器。有没有办法设置 Web API 路由,以便所有相同类型的请求都转到相同的方法?
例如,如果客户端发送这些 GET 请求中的任何一个,我希望它们进入单个 GET 操作方法,然后将请求发送到下游服务器。
api/Proxy/Customers/10045
api/Proxy/Customers/10045/orders
api/Proxy/Customers?lastname=smith
GET 的单一操作方法会获取这三个请求中的任何一个并将它们发送到相应的服务(我知道如何使用 HttpClient 来有效地实现这一点):
http://otherwebservice.com/Customers/10045
http://otherwebservice.com/Customers/10045/orders
http://otherwebservice.com/Customers?lastname=smith
我不想将我的 Web 服务与第三方 Web 服务紧密耦合,并将它们的整个 API 复制为我内部的方法调用。
我想到的一种解决方法是在客户端上用 JavaScript 对目标 URL 进行简单编码,然后将其传递给 Web API,然后它只会看到一个参数。它会起作用,但如果可能的话,我更喜欢使用 Web API 中的路由功能。
【问题讨论】:
-
你有没有想过这个问题?我正在尝试做同样的事情。
-
还没有。我觉得我已经接近了参数路由。
-
我让它满足我的需求 - 请参阅发布的答案。
标签: asp.net-web-api proxy