【发布时间】:2021-02-15 14:16:44
【问题描述】:
关于在拥有另一半信息时如何响应宁静的网络请求的小问题。
我想坚持这不是一个基于意见的问题,因为我认为应该有一个关于做什么的最佳答案。
场景: 某些客户服务 SERVICE_A 是允许客户购买产品的某种服务。 但是,SERVICE_A 只知道产品。意思是,SERVICE_A不知道产品的价格,它需要调用SERVICE_B来实时获取产品的价格。话虽如此,SERVICE_A只知道一半的信息,只知道产品,不知道产品的价格。
客户将通过 SERVICE_A 前端选择产品。客户不能使用其他服务。然后 SERVICE_A 将通过 API 调用 SERVICE_B (1) 与产品。 类似:
{
"product": "someProduct"
}
然后,SERVICE_B 将收到请求 (2),然后使用他自己知道的算法计算价格 (3)。
完成后,SERVICE_B 会将价格返回给 SERVICE_A (4),后者现在拥有所有信息并可以将其显示给客户。
-
在点 (1),SERVICE_A 只知道一半的信息。只有产品。
-
在第(2)点,SERVICE_B收到请求后也只知道一半的信息,只知道产品。
-
在第 (3) 点,SERVICE_B 将第一次知道信息的两半,即产品和价格!
-
在第 (4) 点,获得响应的 SERVICE_A 也将获得两半。
我的问题是,SERVICE_B 是否应该只将他的一半信息发回给 SERVICE_A,让 SERVICE_A 重建整个信息?还是同时寄回?
SERVICE_B 只发回价格。发送请求的 SERVICE_A 重构 someProduct = 1.2
{
"price": 1.2
}
或者应该 SERVICE_B 将所有内容都发回。
{
"product": "someProduct",
"price": 1.2
}
在我的示例中,我只使用了一个字段。但实际上,还有更多。这只是一个例子。
同样,这不是意见问题。我相信应该有一个基于性能、设计原则、微服务架构等的答案。
谢谢
【问题讨论】:
-
SERVICE_A 和 SERVICE_B 是否存在单独存在的用例?如果是,则客户端调用 SERVICE_C,它协调调用 SERVICE_A 和 SERVICE_B,并返回组合结果。一般来说,尽量减少客户的闲聊。
-
谢谢安德鲁! SERVICE_A 和 SERVICE_B 单独存在以回答这个特定的用例。客户必须致电 SERVICE_A,因为 SERVICE_A 将在前端进行产品选择和显示价格等...
标签: java json rest web-services