Для меня это не похоже на REST API. Если вы обновляете и создаете несколько ресурсов одновременно через одну конечную точку, это как бы противоречит принципам REST.
Учитывая, что это больше RPC-подобный вызов, я бы вернул 200 OK
, просто указывая, что операция прошла успешно.
Однако, есть способ превратить это в нечто более похожее на REST.
Если у вас есть несколько ресурсов, базовые данные в этих ресурсах могут быть объединены и представлены в одном ресурсе, своего рода ресурсе «сбора».
Допустим, этот ресурс размещен на /clientstate/<client-id>
. Выполнение GET
возвращает весь ресурс clienttate.
Затем, чтобы обновить этот ресурс, вы должны использовать PUT
для замены всего состояния клиента. Для клиента совершенно неважно, что к одному ресурсу привязано несколько записей базы данных.
Если вы используете PUT
для замены всего этого состояния клиента, то соответствующий код ответа по-прежнему должен быть 200 OK
. Или, возможно, 204 No Content
, если после этого вы не вернете ничего интересного.
Я бы посоветовал против повторного назначения 207 Multi-Status
.