我们目前有一个针对系统内所有服务的大型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结合使用奖励积分:)
答案 0 :(得分:1)
在最初询问此问题时,没有简单的方法可以在服务基本URL的根目录之外创建通配符路由。即如果服务是在root上托管的,那么创建/ {*}通配符路由没有简单的方法,如果服务是在另一个地点托管的话,就像/ api一样,没有简单的方法来创建/ api / { *}通配符路径。
但是,支持Fallback route has recently been added to ServiceStack (see detailed example implementation. )使用后备路由,您可以将所有无法识别的请求代理到后端,而无需在您的后端中枚举它们ServiceStack项目。但是,不提供Swagger支持。
答案 1 :(得分:1)
您可以轻松地将ServiceStack转换为反向代理,并在statement中添加新的Proxy Feature。