У вас есть ресурс, который может существовать в любом из нескольких состояний (активный, отмечен_для_отделения, удален) с действиями, которые перемещают ресурс из одного состояния в другое. Это классическое определение конечного автомата . Для данного перехода вы задаетесь вопросом: «Какой HTTP-глагол представляет этот конкретный переход? Должен ли я злоупотреблять одним? Является ли POST универсальным? Могу ли я придумать свой собственный?» Существует лучший способ. Выставьте состояние напрямую и используйте GET и PUT для его изменения. Пусть сервер выяснит, как перейти из прежнего состояния в новое. Например, у вас может быть ресурс:
GET /foo -> {"a": 1, "b": 2, "status": "active"}
Вы хотите изменить это так:
GET /foo -> {"a": 1, "b": 2, "status": "marked"}
Вы можете задаться вопросом, подходит ли DELETE для этого или какой-то другой метод, или вы можете просто ПОСТАВИТЬ это новое состояние, и все будет сделано:
GET /foo -> {"a": 1, "b": 2, "status": "active"}
PUT /foo <- {"a": 1, "b": 2, "status": "marked"}
GET /foo -> {"a": 1, "b": 2, "status": "marked"}