2016-07-05 5 views
1

При разработке API с командой было отправлено предложение относительно некоторых сложных параметров запроса, которые мы отправили, которые должны быть закодированы как объекты, массивы объектов и т. Д. Предположим, что у меня есть маршрут GET /resource/, и я хочу применить набор фильтров непосредственно в параметрах запроса. Объект буквальная структура этого фильтра будет что-то вродеИспользовать параметр запроса кодированного объекта для запроса GET

filter: { 
    field1: { 
    contains: 'value', 
    notin: ['value2', 'value3'] 
    }, 
    field2: { 
    greaterThan: 10 
    } 
} 

Кодирования это в URL, с помощью строки запроса синтаксического анализа, таких как модуль в qs узла, который использует express.js внутри, будет дешево на внутреннем интерфейсе. Однако 1) Сгенерированный URL-адрес очень трудно читать, если клиент хочет подключиться к API, ему нужно будет использовать библиотеку кодирования, и 2) я не думаю, что когда-либо сталкивался с использованием параметров запроса, подобных этому, он выглядит немного переоснащенный, и я не уверен, как он используется, и если он действительно безопасен.

В приведенном выше примере даст параметры запроса, такие как:

GET /resource/?field1%5Bcontains%5D=value&field1%5Bnotin%5D%5B0%5D=value2&field1%5Bnotin%5D%5B1%5D=value3&field2%5BgreaterThan%5D=10 

ли эта практика отправки параметров запроса URL, что случается, сложные объекты имеют определенные стандарты или наилучшей практики?

ответ

1

Мы реализовали другое решение для фильтрации, когда список возможных параметров был очень длинным. Мы закончили это в два этапа, разместив фильтр и вернув идентификатор фильтра. Идентификатор фильтра затем может быть использован в запросе GET.

У нас возникли проблемы с поиском оптимальных методов для этого.

Смежные вопросы