С диссертация Роя :
унифицированный интерфейс снижает эффективность, поскольку информация передается в стандартизированной форме, а не в той, которая специфична для потребностей приложения. Интерфейс REST разработан для эффективной передачи крупномасштабных гипермедиа данных
Итак, вам нужен вариант 5, который работает как для флагов, так и для других атрибутов:
GET /resource/{id}/ BODY:{muted: false, like: false, rating: 2, ignored: true}
POST /resource/{id}/ BODY:{muted: true, like: false, rating: 2, ignored: true}
POST /resource/{id}/ BODY:{muted: false, like: false, rating: 2, ignored: true}
Одна из серьезных причин заключается в том, что большая часть эффективности HTTP-приложения RESTful достигается за счет кэширования, и это работает лучше всего, когда его артефакты достигают максимально возможного размера и когда его данные достижимы при минимально возможном количестве идентификаторов. Если вы выставите флаг 'muted' в /resource/{id}/
и /resource/{id}/muted
, то у вас возникнет проблема аннулирования кэша. Если вы выставите его только на /resource/{id}/
, тогда вы не сделаете.
Если вы разрабатываете приложение, которое нацелено на повышение эффективности за счет небольших полезных нагрузок, то вы не сможете извлечь выгоду из большого размера кэширования, а архитектурный стиль REST не подходит для вашего приложения. HTTP, вероятно, тоже нет, но я могу понять, как кто-то может застрять на сегодняшнем рынке.