7

我们目前有一个大型 C# ServiceStack API 项目,用于我们系统中的所有服务。为了便于部署和测试,我想将其拆分为单独运行的较小 API。与Mike Hadlow所描述非常相似。

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

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

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

4

2 回答 2

1

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

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

于 2013-09-03T15:05:37.297 回答
1

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

于 2017-06-27T07:40:07.693 回答