Задать вопрос
shcherbanich
@shcherbanich
Программист

Как адекватно добавить группу ресурсов одним запросом в REST API?

Предположим, хранение данных у нас устроено таким образом:
0ff5d92def3b454e94bbcf753faee85c.png
Появилась необходимость реализовать REST API для получения/изменения данных в системе.
Логично предположить такую структуру:
GET /users/ - получение списка пользователей ( ?expand=phones - будут получены привязанные к пользователям телефоны )
GET /users/{id} - получение данных о конкретном пользователе ( ?expand=phones - привязанные к данному пользователю телефоны )
POST /users/ - добавление пользователя
PUT /users/{id} - редактирование данных пользователя
То же самое с телефонами.

Для реализации связи, мы сделаем то же самое для user_phone.

А теперь собственно и сам вопрос:
REST API подразумевает добавление только одного ресурса методом POST, но что делать, если мне надо привязать к пользователю 100 телефонов? 100 запросов в данном случае это как-то многовато, явно эту проблему надо решать другим способом.
Возможные варианты:
1) В обход рекомендациям, передавать в POST /user-phones/ массив с данными ресурсами, например:[{"id_user":1,"id_phone":1},{"id_user":1,"id_phone":2}]. Но тогда не понятно, какой ответ и какие статусы возвращать, как помечать ошибки и др.
2) При редактировании ресурса PUT /user/{id} передавать еще некое значение phones, которое будет содержать массив состоящий из id телефонов, например: {"name":"Алеша","phones":[1,2,3,4,5]}.

Как сделать лучше? Есть ли адекватные решения данной проблемы, или стоит использовать один из этих двух вариантов?
  • Вопрос задан
  • 155 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы