正在中的共享库中创建API.NET核心



在我们的微服务架构中,有几个API是每个服务所包含的共享库的一部分。我们希望这些API(例如/cache/delete(出现在所有服务中。然而,我们无法弄清楚如何动态分配URL路由。因此,我们需要的是URL路由基础(特定于服务(将作为资源/操作的前缀。例如:

https://example.com/api/service1/cache/delete

https://example.com/api/service2/cache/delete

在C#v10中引入了插值常量字符串,这将允许类似[Route($〃{prefix}/cache/delete(]的操作。但我们暂时不会在这个版本上。

我想知道是否还有其他可能的实现方式。

听起来每个服务都有自己的路由前缀。我通常不喜欢这样做,因为我只是做了其他事情,比如API网关或使用某种服务发现工具(Consul、Kubernetes中的服务发现等(

如果你这样做了,你就可以映射到/cache,这将使两端(服务和库(的生活变得轻松。

如果你想保持目前的模式,你可以点击IEndpointRouteBuilder。然后,每个服务都可以使用您设置的默认值(/cache(,或者定义自己的端点。这就是服务可以插入自己的前缀的地方,您可以从库中承担确保它具有正确端点的责任。

试图创建一个包罗万象的通用库来处理类似路由的事情,这是针对每个服务的,这会带来麻烦。对于每一个使用缓存的服务,您都会强迫自己采用相同的路由模式,即使您可能想要其他服务。允许路由灵活并由服务管理,而不是像那样将两者耦合在一起。

最新更新