При разработке 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, что случается, сложные объекты имеют определенные стандарты или наилучшей практики?