Я работаю над новым REST-полным API, основным / единственным потребителем которого будет умный / не веб-браузер клиент. У меня есть ресурс коллекции, который поддерживается / обновляется фоновыми процессами, а не самим клиентом. Единственный тип контента, необходимый для первой итерации, - это JSON. URI выглядят примерно так:
/ items /
- Ресурс, представляющий коллекцию элементов. / items / 123
- Ресурс, представляющий отдельный элемент с идентификатором 123
.Хотя клиент не будет создавать новые элементы или обновлять коллекцию для добавления / удаления элементов, он будет обновлять некоторые значения в отдельных элементах.Я планирую использовать HTTP PATCH для обновления ресурсов элемента, используя мой собственный формат исправления JSON.
Будет много одновременных клиентов, читающих элементы, и одновременных обновлений для разных элементов, с периодическими одновременными обновлениями одного и того же элемента, и хотя определенная степень «возможной согласованности» разрешена, я хотел бы спроектировать это как "дружественный к кешу" способ, насколько это возможно. Читая RFC для PATCH, я вижу, что при успешном ответе на PATCH кеш Request-URI должен быть обновлен ответом, если он есть. Вопрос сводится к следующему:
Могу ли я:
A) включить полное представление отдельных элементов в JSON-представление ресурса коллекции / items /
и отправить PATCH на / items /
URI и включить элемент для обновления в формате патча?
ЗА:
N
количество запросы только для отображения списка ресурсов элементов
недействительным, когда клиент обновляет элемент. Минусы:
ИЛИ
B) В JSON-представлении коллекции ресурсов включите только ссылки на включенные элементы и попросите клиента запросить отдельные элементы после обнаружения, какие из них находятся в коллекции. HTTP PATCH будет отправлен на URI отдельного элемента (например, / items / 123
)
ЗА:
МИНУСЫ:
N + 1
запросов для отображения полного списка элементов.