Предположим, хранение данных у нас устроено таким образом:
Появилась необходимость реализовать 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]}.
Как сделать лучше? Есть ли адекватные решения данной проблемы, или стоит использовать один из этих двух вариантов?