Как правильно реализовать REST API при использовании пользовательского фильтра

#api #rest #architecture #backend

#API #rest #архитектура #серверная часть

Вопрос:

Допустим, у меня есть 2 объекта в моем приложении: платформа и публикация. Публикации размещаются на платформах в течение определенного периода времени.

 Platform { id: number; name: string }
Publication { id: number; publish_at: timestamp; unpublish_at: timestamp }
  

Итак, мне нужна конечная точка, куда я могу отправить массив временных интервалов (Array<{start: timestamp; end: timestamp}>) и получить массив платформ, где публикации не пересекаются с отправленными временными интервалами, в других мирах — платформах, доступных для публикации в эти временные интервалы.

Вначале я создал простую конечную точку POST с именем, подобным / api / available-platforms, с пользовательскими входными параметрами (Array<{start: timestamp; end: timestamp}>) .

Сейчас я пытаюсь реализовать стиль архитектуры REST API в своем приложении. Как правильно создать конечную точку выше в REST way?

Ответ №1:

Наиболее рациональным подходом будет выполнение GET / platforms с интервальным фильтром в качестве параметра запроса (в данном случае в кодировке JSON). В случае, если ваш URL-адрес становится слишком длинным (вы столкнетесь с проблемой ограничения длины URL) Я предлагаю использовать сообщение с телом. Я знаю, что выполнение POST не слишком соответствует парадигме REST, но это лучше, чем выполнение GET с body (что намного менее стандартно).