我们将3个API应用程序构建为一种面向服务的体系结构。我说有点因为它不完全包含SOA原则,因为我将用这个简单的用例来解释。
我们有客户端API ,负责处理客户联系信息。另一方面,我们有销售API ,负责报价和结算。这是它变得凌乱的部分(恕我直言)。 sales API有一个 orders 表,其中包含 client_id 属性,以便知道哪个客户端与之关联。
正如我所说,架构已经构建为一种SOA,这意味着每个服务都有自己的数据库。 因此,为了继续使用我们的用例,销售API在某个时刻存储了 client_id ,这个客户端实际上并不存在于此API的上下文中,因为客户端API是承担此责任的客户端API。 / p>
例如,假设为了创建新的销售订单,我需要检查关联的客户端(在POST api.sales.domain.com/orders中作为client_id发送)是否确实存在。如何处理这种情况?现在,我们针对客户端API执行HTTP请求并检查200响应。 如果我们想在订单json中返回嵌入的客户端数据该怎么做:
{
"id": 2,
"status": "pending",
"client": {
"name": "John Doe",
"address": "123 street"
}
}
由于我们正在使用Rails,我们使用gem Her来处理这些情况。但它确实感觉不对。
有更好的方法吗?
答案 0 :(得分:0)
首先,为什么允许在Sales API系统中创建client_id,而Client API系统中不存在这样做?当您在Sales API系统中添加记录时,它应该同时在Client API系统中添加client_id,这不会出现此问题本身。每次您不需要检查Client API中是否存在client_id。我认为这是最好的方式。
如果您无法遵循上述方法,那么您的解决方案就是实现它的一种方式。