我正在 ASP.NET Core Web API 中开发一个服务,它充当另一个服务的代理。对于少数特定端点,它应该自行处理请求,但对于所有其他端点,我希望它充当其他服务的桥梁,按原样发送请求,并按原样返回其响应。
我设法做到了这一点,但它变得相当复杂,而且我不断发现需要特殊处理的边缘情况,尽管我相信这应该是一个非常简单的问题。所以我想知道我是否缺少一个更简单的解决方案。
这是我尝试做的要点:
[Route("{**all}")]
创建了一个端点来处理其他端点未处理的所有路由。HttpRequestMessage
中的值创建了 ControllerBase.Request
对象,包括方法、路由、查询字符串、标头和正文,并使用 HttpClient
将其发送到其他服务器HttpResponseMessage
获取的 HttpClient.SendAsync
对象,我填充了 ControllerBase.Response
中的值,包括状态代码、标头和正文。我遇到的一些问题(前两个我解决了,最后一个我还没有尝试过,因为我认为它变得太复杂了)
ResponsePhrase
未桥接那么我是否缺少一些更简单的解决方案?如果它真的很复杂,是否有任何现有的方法或库已经可以做到这一点?
非常感谢您的帮助。
我认为 YARP 正是您正在寻找的东西 :
https://microsoft.github.io/reverse-proxy/api/index.html
它拥有您需要的一切(甚至更多) - 我们成功地通过它放置了 swagger,甚至hangfire 仪表板。