Предположим, что у меня есть REST API, который придерживается основных принципов HATEOAS. Items
относятся к User
.Лучший подход для обновления отношения к другому ресурсу в REST API
GET /item/13
{
id: 13,
name: 'someItem',
type: 'someType',
_links: [
{
rel: 'user',
href: '/user/42'
}
]
}
Теперь мне нужен способ изменить пользователя для данного элемента. С помощью PUT или PATCH, который является предпочтительным способом выполнения этой модификации?
Установите новое отношение, установив идентификатор нового связанного ресурса как простое свойство в теле JSON
PATCH /item/13 { userId: 43 }
установить новое отношение, имея клиента передать ссылку себя как вход
PATCH /item/13 { _links: [ rel: 'user', href: '/user/43' ] }
я обычно думаю, ссылки, как только для чтения представлений отношений Типов которые хранятся в других форматах (например, id: s для других ресурсов), которые возвращаются из вызовов GET. Мне не очень удобно иметь ссылки как вход на вызовы POST/PUT/PATCH, а тот факт, что ссылки - это массив, делает его еще более странным (нужно ли обновлять все ссылки?), но я видел это в различных статьях. Есть ли наилучшая практика? Каковы преимущества использования подхода ссылок?
для таких сценариев Мне всегда нравится, как GitHub использует put на дочерний ресурс при старте проекта. Я их API вы используете 'PUT' или' DELETE' на '/ project/star'. Для простых модификаций я обычно использую PUT '/ item/{ID}/user' или DELETE'/item/{ID}/user/{ID} '. Это швы не соответствуют стандартам REST, но, на мой взгляд, менее неудобно использовать, чем передавать его в основном запросе тела ресурса. – Adam