首页 > 解决方案 > REST API 过滤器,其字段的值是根据其他字段动态计算的

问题描述

我有一个 REST 服务(Springboot),它为数据库中的资源提供基本的 CRUD。例如,名为virtual-machines的资源。

GET虚拟机的响应体如下所示:

{
    "vmName": "123",
    "vmDisks": [
        {
            "disk1": {"diskSize": 123},
            "disk2": {"diskSize": 234}
        }
    ],
    "totalSize" : 357
}

我想过滤 totalSize 大于 300 的虚拟机。

/api/virtual-machines?filter="totalSize lt 300"

但是,该字段totalSize不会永久存储在 DB 中(根据diskSizeREST 层中的字段动态计算)。通过将过滤器传递到DB中可以很容易地实现DB中的过滤字段,同时分页可以由DB处理。

对于这个计算字段 - totalSize,我不知道如何支持过滤和排序。显然,我无法获取内存中的所有资源并手动通过分页对这个特殊字段进行过滤和排序。

我很感激你的回复。

标签: spring-bootrest

解决方案


推荐阅读