Передача массива значений в Rest API Route

Я использую Slim Framework для создания REST API для моего проекта. Само WebApp разработано с использованием ReactJS.

У меня есть сомнения относительно того же. У меня есть набор значений, хранящихся в массиве в моем приложении ReactJS. Эти значения являются фильтрами, которые используются для фильтрации данных из моей таблицы.

Моя таблица содержит поле с именем location. В моем WebApp у меня есть фильтр поиска, где я могу добавить несколько мест, на основе которых должны отображаться результаты. Я храню эти фильтры в массиве.

Я хочу знать, как я могу передать этот массив в Rest API Route, чтобы я мог получить этот массив в моей REST API Framework.

Я хочу достичь чего-то вроде

/ маршруты / местоположение / [arrayOfValues]

0

Решение

Существует только два способа передачи данных на сервер — либо в виде параметров URL (для POST, GET или чего-либо еще), либо в теле запроса (для PUT или POST). Вы также пишете код для обработки запроса API? Исходя из вашего описания варианта использования, кажется, что GET будет наиболее семантически правильным глаголом, поэтому вы должны использовать параметры URL, как предложено @BrianPutt. Использование квадратных скобок является стандартным способом кодирования значения массива. Как определяются места? Долгота широта? Если это так, вы также можете просто создать строку через запятую, например,

/routes/location?q=12.3409,-40.0004,2.34004,120.0294

Но, скорее всего, ваша внутренняя структура имеет встроенную поддержку парсинга этих параметров URL, так что вы должны просто использовать это.

/routes/location?q[]=12.3409,-40.0004&q[]=2.34004,120.0294

Единственная причина этого не делать, если у вас огромное количество местоположений, и в этом случае вы можете использовать запрос POST и создать какой-то объект JSON для помещения в тело.

Также: будьте последовательны! Если остальная часть вашего API использует JSON, вам, вероятно, следует использовать его и здесь.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]