У меня есть клиентский интерфейс, который позволяет пользователю выполнять несколько правок в виде древовидного контура. Я считаю, что совокупность записей, составляющих эту схему, в целом представляет собой единый ресурс (/ outlines / 39), хотя к его частям можно обращаться как к отдельным ресурсам через разные URL-адреса.
Проблема в том, что пользователь может редактировать существующие узлы в схеме, а также добавлять новые узлы в схему. Обычно, когда вы редактируете что-то, вы помещаете его изменения, а когда вы добавляете что-то новое, вы помещаете это; однако в некоторых случаях вы захотите объединить все изменения, включая как добавления, так и изменения, в одну транзакцию. Какими практическими способами люди справляются с этим?
Даже если контур уже существует и PUT кажется подходящим, встроенные добавления нарушают идемпотентность PUT. Я не уверен, что POST тоже кажется уместным. Для целей проектирования я решил не сохранять каждое отдельное обновление, которое делает пользователь, хотя, полагаю, это предлагает одно решение. Тем не менее, должны быть другие, которые занимались моей проблемой или имеют идеи по этому поводу.