如何通过http将排序后的数据从一项服务获取到另一项服务

How to get sorted data from one service to another over http

我有面向服务的架构和几个服务。

假设我有这样的类别实例

{
   id: 1,
   parentCategory: null,
   productIds: [1, 3, 4, 5, ....]
}

我需要从上面的类别中按产品价格排序获取 10 种产品。

类别服务处理该请求,因为它对价格一无所知,所以它必须像这样向产品服务发出请求:

/api/products?
   ids=<list of all product ids>
   limit=10
   sortBy=price

当类别中有很多产品时,这将无法正常工作。

这种情况的秘诀是什么? 谢谢

您应该让该端点仅接收 Http Post,然后您应该将所有产品 ID 放入您的请求正文中。像这样:

{ "ids" : [], (一个包含你所有 ID 的数组) "limit": 10, "sortBy": "price" }

不确定你为什么有字段 "limit",我认为控制限制的是你传入的 ID 数量。

我同意 victor - POST 请求可以解决潜在问题。如果您担心性能,例如,在有数千个 ID 的情况下,您应该考虑将这些服务合并在一起。或在类别服务中复制价格数据。

出于性能原因,数据重复和将多个服务合并为一个是微服务架构中的正常情况。但是如果你的Products服务只是存储信息,没有任何业务逻辑,那我肯定会考虑合并。

此外,考虑让所有 ID 都已在类别服务中排序。对我来说,如果 Products 服务不做任何有用的业务而只做排序,这将是这种情况下的最佳解决方案