如何通过http将排序后的数据从一项服务获取到另一项服务
How to get sorted data from one service to another over http
我有面向服务的架构和几个服务。
产品 - 商店产品列表
{
id: number,
price: number
}
Categories - 店铺分类信息+产品id列表
{
id: number,
parentCategory: number,
productIds: number[]
}
假设我有这样的类别实例
{
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 服务不做任何有用的业务而只做排序,这将是这种情况下的最佳解决方案
我有面向服务的架构和几个服务。
产品 - 商店产品列表
{ id: number, price: number }
Categories - 店铺分类信息+产品id列表
{ id: number, parentCategory: number, productIds: number[] }
假设我有这样的类别实例
{
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 服务不做任何有用的业务而只做排序,这将是这种情况下的最佳解决方案