Я проектирую и внедряю конечную точку REST для извлечения и фильтрации больших объемов данных.Данные структурированы в сигналы и поступают из разных источников данных.Процесс фильтрации возвращает только указанные сигналы из указанных источников.Два сигнала из двух разных источников могут иметь одно и то же имя, поэтому их нельзя однозначно идентифицировать только по имени.
Вопрос в том, какой подход будет наиболее масштабируемым и RESTful?
Вещи Iрассмотрено:
Выполнить запрос GET с двумя списками параметров в URL: списком имен сигналов и соответствующими им источниками ( sources = src1, src1 & сигналов= sig1, Sig2 ).Однако это приведет к очень длинной строке запроса.
Выполните запрос GET с телом JSON, содержащим имена источников в качестве ключей и имен сигналовкак вектор ( {src1: [sig1, sig2]} ).Тем не менее, это нарушит передовые методы RESTful, поскольку у запроса GET не должно быть тела.
Сделайте запрос POST стело представлено в 2. Однако у меня уже есть конечная точка GET для извлечения данных (однако без фильтрации), и мне нужно использовать то же самое.Я мог бы изменить запрос на POST , но было бы неправильно использовать POST для извлечения данных.
Другие ограничения:новые источники могут быть добавлены позже, поэтому я не могу просто использовать имя источника в качестве имени параметра запроса (также я уже использую другие параметры запроса) - но я мог бы легко перебирать ключи JSON.Есть также источники, которые не содержат сигналов, поэтому я должен иметь возможность включать их тоже (то же самое, если, например, клиент запрашивает все сигналы из источника).Наконец, база данных сигналов содержит около 30 000 сигналов, поэтому наихудший случай должен быть в состоянии охватить все это.