使用 ServiceStack 作为 API Facade 层

问题描述 投票:0回答:2

我们目前有一个大型 C# ServiceStack API 项目,用于系统内的所有服务。我想将其分成更小的 API,所有这些 API 都单独运行,以便于部署和测试。与 Mike Hadlow here 的描述非常相似。

但是,我不想使用 Nginx,而是想使用 ServiceStack 作为反向代理。这个“外部”API 将处理身份验证问题,然后使用异步 HTTP REST 调用将任何传入请求转发到相关的内部 API。

我该如何创建这个服务转发器呢?假设我有一个接受 /hello 调用的内部 API。如果我尝试在外部 API 主机上创建自定义 ServiceRunner,我将无法拦截任何调用。它仍然期望存在某些路由,因此在外部 API 上调用 /hello 失败。我是否需要在外部 API 主机上创建虚拟 /hello 路由,以便能够使用我自己的 ServiceRunner 拦截它们?看看 ServiceStack 的其余部分,我确信有一种更干净的方法。

如果它仍然可以与 Swagger 结合使用,那就加分了:)

c# .net servicestack
2个回答
1
投票

最初提出这个问题时,没有简单的方法可以在服务基本 url 的根目录之外创建通配符路由。 IE。如果服务托管在根目录,则没有简单的方法来创建 /{*} 通配符路由,如果服务托管在另一个点(例如 /api),则没有简单的方法来创建 /api/{ *} 通配符路线。

但是,ServiceStack 最近添加了对 Fallback 路由的支持 请参阅详细示例实现。)使用 Fallback 路由,您可以将所有无法识别的请求代理到后端,而无需在您的应用程序中枚举它们。服务堆栈项目。但是,不提供 Swagger 支持。


1
投票

您可以使用v4.5.10中添加的新代理功能轻松将ServiceStack转换为反向代理。

© www.soinside.com 2019 - 2024. All rights reserved.