Существует ли универсальный язык запросов REST для JPA, spring-data, spring-data-rest - PullRequest
0 голосов
/ 10 мая 2018

Требования

  • универсальный язык запросов, который можно использовать в запросах GET для сбора ресурсов в API REST для фильтрации набора возвращаемых ресурсов
  • запросов, переданных через «стандартный» язык запросов и отправленных по HTTP в качестве параметров запроса - .e.g / someresource? Query = ...... или /someresource?a.b.c=2
  • SQL-запросы, построенные во время выполнения на сервере
  • тесная интеграция с jpa, spring-data, spring-data-rest - чем меньше кода, тем лучше.
  • для запросов доступны вложенные пути к ресурсам и атрибутам
  • поддержка сложных операндов - EQUALS, GREATER_THAN, LESS_THAN, NEGATION, LIKE, И, ИЛИ, НЕ, IN

например. resourceA.attribute1 = "CAT" AND resourceA.subResourceB.attribute2> = 42 AND resourceA.attribute3 IN ("WHIZ", "BANG")

Я исследовал четыре решения, каждое из которых приближалось к цели. Есть ли какое-то другое решение, которое я не нашел, или нет такого полного решения "из коробки" - ответ на вопрос "Язык запросов REST с RSQL" описан ниже?

1) запросы данных-пружин

В весенних данных имеется много поддержки для разработки сложных запросов в коде, однако это требует, чтобы разработчик заранее знал структуру запросов и соответствующим образом создавал код. https://docs.spring.io/spring-data/rest/docs/current/reference/html/#repository-resources.query-method-resource

2) spring-data, spring-data-rest, query-dsl

http://www.baeldung.com/rest-api-search-querydsl-web-in-spring-data-jpa

+ ve Идеально подходящее решение с практически нулевым кодированием из коробки

+ могут быть построены глубоко вложенные запросы, и сервер генерирует правильный SQL на лету.

-ve единственный оператор - это EQUALS '=', чтобы применить дополнительные операторы, вам нужно реализовать экземпляры QuerydslBinderCustomizer, которые еще раз требуют, чтобы код сервера заранее знал о сложности запроса.

https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/querydsl/binding/QuerydslBinderCustomizer.html

3) Baeldung - «построение языка запросов отдыха»

http://www.baeldung.com/spring-rest-api-query-search-language-tutorial

+ ve - приближение к общему языку запросов

-ve - похоже на демо / POC

4) REST Query Language с RSQL

http://www.baeldung.com/rest-api-search-language-rsql-fiql

+ ve - похоже на более полный язык запросов и связанный с ним синтаксический анализатор

-ve - не уверен в интеграции пружины

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