这是一个具有现实意义的抽象问题。
我有两个微服务;让我们称它们为CreditCardsService
和SubscriptionsService
。
我还有一个应该使用的 SPA,SubscriptionsService
以便客户可以订阅。为此,SubscriptionsService
有一个端点,您可以在其中POST
使用订阅模型来创建订阅,并且在该模型中是creditCardId
指向应支付订阅费用的信用卡。有某些业务规则规定您是否可以使用所述信用卡进行订阅(到期时间超过 12 个月,它是 VISA 等)。这些特定的业务规则与SubscriptionsService
问题是从事 SPA 的团队想要一个/CreditCards
端点,该端点SubscriptonsService
返回可以在订阅模型中使用的用户的所有有效信用卡。他们不想在 SPA 中实现与SubscriptionsService
自身相同的业务验证规则。
对我来说,这似乎违背了微服务设计的核心原则。特别是关注点分离。我也问自己,这要开什么先例?我们是否必须向/CreditCards
OrdersService 或任何其他可能creditCardId
用作其模型属性的服务添加端点?
所以主要的问题是:设计这个的最好方法是什么?业务验证逻辑是否应该在前端和后端之间重复?是否应该将此新端点添加到SubscriptionsService
? 我们是否应该尝试简化业务逻辑?