Java Web服务设计:RESTAPI应该发回一半还是全部信息?
关于在拥有另一半信息时如何响应restful web请求的小问题 我想坚持这不是一个基于意见的问题,因为我认为应该有一个最佳答案来回答该怎么做 情景: 一些客户服务,service_A,是一种允许客户购买产品的服务。 然而,服务A只知道产品。也就是说,SERVICE_A不知道产品的价格,它需要呼叫SERVICE_B以实时获取产品的价格。话虽如此,服务商只知道一半的信息,只知道产品,而不知道产品的价格 客户将通过前端服务选择产品。客户无法转到其他服务。然后,服务_A将通过API使用产品调用服务_B(1)。 比如:Java Web服务设计:RESTAPI应该发回一半还是全部信息?,java,json,rest,web-services,Java,Json,Rest,Web Services,关于在拥有另一半信息时如何响应restful web请求的小问题 我想坚持这不是一个基于意见的问题,因为我认为应该有一个最佳答案来回答该怎么做 情景: 一些客户服务,service_A,是一种允许客户购买产品的服务。 然而,服务A只知道产品。也就是说,SERVICE_A不知道产品的价格,它需要呼叫SERVICE_B以实时获取产品的价格。话虽如此,服务商只知道一半的信息,只知道产品,而不知道产品的价格 客户将通过前端服务选择产品。客户无法转到其他服务。然后,服务_A将通过API使用产品调用服务_B
{
"product": "someProduct"
}
然后,服务_B将接收请求(2),然后使用他知道的自己的算法(3)计算价格
完成后,SERVICE_B将把价格返回给SERVICE_A(4),SERVICE_A(4)现在拥有所有信息并可以向客户显示
- 在第(1)点,服务A只知道一半的信息。只有产品
- 在第(2)点,SERVICE_B在收到请求时也只知道一半的信息,只有产品
- 在第(3)点,SERVICE_B将首次了解信息、产品和价格的一半
- 在第(4)点,得到响应的服务_A也将得到两半
{
"price": 1.2
}
或者服务部应该把所有东西都寄回去
{
"product": "someProduct",
"price": 1.2
}
在我的示例中,我只使用一个字段。但实际上,还有很多。这只是一个例子
同样,这不是一个意见问题。我相信应该有一个基于性能、设计原则、微服务架构等的答案
多谢各位
我的问题是,SERVICE_B是否应该只将他一半的信息发回SERVICE_A,让SERVICE_A重建整个信息?还是同时送回去
REST中通常的答案是,服务_B将使用请求的资源的当前表示形式的副本来响应请求
GET /price-list?product=someproduct
本质上,您是在问产品是否应成为表述的一部分,对此我回答:
- 当然,为什么不呢
- 但你不必这么做
现在,如果您使用的不是REST,而是带有更多RPC字符(SOAP/graphQL/gRPC)的设计,那么答案可能会改变,因为当通用组件无法利用“缓存”时,“缓存”会失去很多功能 如果无论如何都会有额外的往返,那么保持有效负载更小是有意义的
对我来说,我倾向于包含客户提供的信息,因为这给了你一种解决某些类型错误的方法。但这是一种“其他一切平等”的立场。如果你需要小的,如果你真的需要它,那么在引入故障解决的支持时,你需要仔细考虑预算。< /P>有Service eA和Service eB单独存在的用例吗?如果是,则客户端调用服务_C,该服务协调调用服务_A和服务_B,并返回组合结果。总的来说,尽量减少客户的闲聊。谢谢安德鲁!服务_A和服务_B单独存在以回答此特定用例。客户必须致电服务A,因为服务A将有前端用于选择产品和显示价格等。。。