Фильтр REST API с полем, значение которого рассчитывается на основе других полей динамически - PullRequest
0 голосов
/ 16 марта 2020

У меня есть служба REST (Springboot), которая обеспечивает c CRUD для ресурсов в БД. Например, ресурс с именем виртуальные машины .

Тело ответа виртуальных машин GET выглядит следующим образом:

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

I хотите отфильтровать виртуальную машину, чей totalSize больше 300.

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

Однако поле totalSize не постоянно сохраняется в БД (вычисляется динамически на основе поля diskSize в слое REST). Поля фильтрации в БД могут быть легко достигнуты путем передачи фильтра в БД, а БД может обрабатывать БД одновременно.

Для этого вычисляемого поля - totalSize, я понятия не имею, как поддерживать фильтрация и упорядочение. Очевидно, что я не могу получить все ресурсы в памяти и выполнить фильтрацию и упорядочение этого специального поля с разбивкой на страницы вручную.

Я ценю ваш ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...