Я знаю, что конечные точки REST должны быть существительными вместо глаголов, но иногда возможны небольшие отклонения?Условное соглашение об именовании конечных точек
Представьте конечную точку, которая должна опубликовать продукт (сделать его видимым на веб-странице, возможно, добавить что-то в очередь).
Я могу предложить два способа решить эту проблему.
1) PUT api/products/1/publish - Мне нравится, потому что он явный, избегает сложностей на бэкэнд, и он сам документирует.
2) ЗАПЛАТА/PUT/ЗАПЛАТА API/Продукты/1
{
"color": "green",
//some properties removed for brevity
"ispublished" : true
}
Второй подход требует обслуживания серверной, чтобы следить за isPublished поля на пост тела и, когда тот переворачивается к истинному, начало процесс публикации. Это кажется немного более сложным и более важным.
Итак, мой вопрос в том, хорошо ли с точки зрения REST использовать первый подход? Есть ли большие недостатки?
Статус «опубликованной» является окончательным _state_ продукт. Чтобы добраться до этого состояния, сначала нужно сначала выполнить команду «публикация» _triggered_. Предлагаемый вариант 1 выглядит как соответствующий [command] (http://stackoverflow.com/a/5625525/4207332) триггер. –
@SergeyShushlyapin REST не о _commands_, REST - это _resources_ и их _states_. RPC - это _commands_. –