Во-первых, я думаю, вы должны думать, что это
Я не смог создать 2 запроса, потому что клиент хочет, чтобы этот процесс был транзакционным.
по-другому. На мой взгляд, требование к транзакции может означать просто - я могу быть совершенно неправ в этом, поэтому выясните правду - что при обновлении до Abc
процесс создания нового Xyz
выполняется с обновлением Abc
. Таким образом, Xyz
не создается, если обновление для Abc
завершается неудачно (или наоборот) и возвращается какая-то ошибка.
Таким образом, вы можете создать две конечные точки:
- один с POST : новый
Xyz
- еще один для создания нового
Xyz
и одновременного обновления Abc
транзакционно
Так что вы можете создать две конечные точки. Более интересно то, что это последний POST или PATCH ? Вроде как-то так и есть, да.
Однако см. - например - этот вопрос и принятый ответ , существует примерно PATCH :
Метод PATCH запрашивает, чтобы набор изменений, описанный в объекте запроса, был применен к ресурсу, идентифицированному Request-URI
Теперь возникает следующий вопрос: изменились ли Abc
, идентифицированные по Request-URI ? Если нет, то это - как я понимаю - POST .
Это означает, что вам нужна только одна конечная точка POST , которая проверяет, есть ли необходимость, и выполняет ли транзакционный идентификатор обновления. Но, возможно, было бы лучше иметь отдельные конечные точки.