Сложные запросы с REST API
Мне интересно, возможно ли придерживаться принципов REST при создании того, что по существу будет представлять собой инструмент BI.
В моем сценарии у меня большой объем данных с сотнями тысяч идентификаторов (откровенно говоря, больше, но для примера рассмотрим это). Они представлены в традиционной таблице, которая учитывает необходимые функции при доступе к большим наборам данных, таким как нумерация страниц. Пользователь также имеет возможность фильтровать по одному или нескольким из этих идентификаторов, чтобы развернуть набор данных по своему усмотрению.
Теоретически возможно, что пользователь захочет отфильтровать по 100 идентификаторам, что сделает GET URI невероятно длинным. Что, как я понимаю, нарушило бы принцип идентификации ресурсов REST API. Не говоря уже о том, что потенциально может столкнуться с ограничением символов в GET-запросе для некоторых браузеров, поскольку идентификаторы могут быть довольно длинными. Обычно я просто использую POST, так как я могу добавить все примененные фильтры в тело и сгенерировать предложение where на сервере.
Так как POST в REST API должен
Создайте новую запись в коллекции.
По определению может показаться, по крайней мере, мне, что создание сложного запроса для чего-то подобного означало бы, что REST API невозможен. Или это, возможно, означает, что я подхожу к решению неправильно (полностью правдоподобно).
Казалось бы, в моем сценарии использование GET просто невозможно из-за потенциальной длины параметров. Таким образом, я вынужден использовать POST. Хотя использование POST, как я, кажется, нарушает стиль REST, который не конец света. Я просто хотел дважды проверить, что я что-то не пропустил, и нет решения, использующего GET.
1 ответ
Чтобы следовать принципу ресурсов, сделайте поиск как ресурс. Отправьте свои идентификаторы в теле этой конечной точки, и он подготовит список результатов для вас и перенаправит вас на результаты поиска /{id}.
См. Например: https://gooroo.io/GoorooTHINK/Article/16583/HTTP-Patterns---Bouncer/25829