Доступ к определенной записи в лист-листе с помощью yang restconf
Мне понятно, как относиться к list
элемент (restconf черновик), но не ясно, как ссылаться на конкретный leaf-list entry
, Например, дано следующее определение:
module x {
container y {
leaf-list z;
}
}
and if I have the following data in the system
<y>
<z>a</z>
<z>b</z>
<z>d</z>
</y>
как мне вставить c
на третьей позиции?
Restconf имеет "insert" и "point", которые принимают ресурс URI. Но каков ресурс URI для идентификации элемента списка? Если я хочу сослаться на вторую запись, допустимо ли следующее?
/y/z=b
1 ответ
Каждая запись в лист-листе является отдельным ресурсом данных в restconf-draft-10.
Контейнеры, листы, записи в листах, записи в списках, узлы anydata и anyxml являются ресурсами данных.
Об этом говорится в разделе 3.5. leaf-list
записей. Далее это определяет кодировку leaf-list
Идентификаторы ресурса данных в 5.3.1:
Если узел данных в выражении пути является узлом листового списка YANG, тогда значение листового списка ДОЛЖНО быть закодировано в соответствии со следующими правилами:
o Идентификатор экземпляра для листового списка ДОЛЖЕН быть закодирован с использованием одного сегмента пути [RFC3986].
o Сегмент пути состоит из имени листа списка, за которым следует символ "=", за которым следует значение листа листа. (например, /restconf/data/top-leaflist=fred).
Итак, ваш пример для второй записи это будет: /restconf/data/x:y/z=b
,
Что касается вставки, то, похоже, неясно. В приложении D к проекту приведены примеры point
а также insert
, но используйте list
вместо leaf-list
(обратите внимание, что оба ДОЛЖНЫ быть ordered-by user
для того, чтобы два параметра были действительными в запросе).
POST /restconf/data/example-jukebox:jukebox/
library/artist=Foo%20Fighters/album=Wasting%20Light?
insert=after&point=%2Fexample-jukebox%3Ajukebox%2F
library%2Fartist%3DFoo%20Fighters%2Falbum%3D
Wasting%20Light%2Fsong%3DBridge%20Burning HTTP/1.1
Host: example.com
Content-Type: application/yang.data+json
{
"example-jukebox:song" : {
"name" : "Rope",
"location" : "/media/foo/a7/rope.mp3",
"format" : "MP3",
"length" : 259
}
}