Я работаю над Rest Api, который предоставляет схему glTF 3d-сцены. Хотя GET и POST кажутся простыми, я не могу решить, как обрабатывать операции DELETE.
Удаление узла не так просто, как удаление всех ссылок на его методы доступа ID, bufferViews и буферы. Кроме того, ссылки последующих узлов также нуждаются в обновлении. Кроме того, необходимо также решить, как обращаться с дочерними элементами этого узла; Рассмотрим следующий пример:
root
| |
n1 n2
| | |
n3 n4 n5
Когда n1 удаляется, что должно произойти с его дочерними элементами (n3, n4)? Одна идея состоит в том, чтобы выполнить каскадное удаление и, следовательно, удалить n3 и n4.
root
|
n2
|
n5
Другая идея - оставить n3 и n4 без изменений, но добавить их в список дочерних элементов родительского элемента n1 (здесь: root) .
root
| | |
n3 n4 n2
|
n5
Наконец, я не смог добавить n3 и n4 ни к одному из родителей, что означает, что они будут добавлены вверху рядом с root. С одной стороны, это разрушило бы иерархию узлов. С другой стороны, мы уже настроены на иерархию сцены, поэтому, где мы рисуем линию?
n3 n4 root
|
n2
|
n5
Поскольку перевод родительского узла также влияет на детей, я склонен следовать тому же поведению для Удалить операцию. Следовательно, я бы соответствующим образом задокументировал API, чтобы разработчики знали об этом (потенциально неожиданном) побочном эффекте.