Доступ к отдельному листу в листе в списке ян
Я хочу получить доступ к значению листа списка в модуле Ян? бывший
module abc
{
list xyz{
key a;
leaf a{
type int
},
leaf b{
type string
},
leaf c{
type string
},
leaf d{
type string
}
}
}
REST должен быть похож на "abc/xyz/(который является ключевым)" т.е. (abc/xyz/1)
это даст все значения a, b, c, d.
Но если я хочу получить доступ к индивидуальному элементу b, c, d индивидуального, который не является ключевым. Как мы можем написать REST API?
1 ответ
Это объясняется в RFC8040, раздел 3.5.3. Вот пример из этого раздела:
Примеры:
container top { list list1 { key "key1 key2 key3"; ... list list2 { key "key4 key5"; ... leaf X { type string; } } } leaf-list Y { type uint32; } }
Для приведенного выше определения YANG контейнер "top" определен в модуле YANG "example-top", а целевой URI ресурса для листа "X" будет закодирован следующим образом:
/restconf/data/example-top:top/list1=key1,key2,key3/\ list2=key4,key5/X
Для приведенного выше определения YANG целевой ресурсный URI для листового списка "Y" будет закодирован следующим образом:
/restconf/data/example-top:top/Y=instance-value
В следующем примере показано, как зарезервированные символы кодируются в процентах внутри значения ключа. Значение "key1" содержит запятую, одинарные кавычки, двойные кавычки, двоеточие, двойные кавычки, пробел и косую черту (,'":" /). Обратите внимание, что двойная кавычка не является зарезервированным символом и не должна кодироваться в процентах. Значением "key2" является пустая строка, а значением "key3" является строка "foo".
Пример URL:
/restconf/data/example-top:top/list1=%2C%27"%3A"%20%2F,,foo
Таким образом, в контексте вашего примера, вы бы сделали /restconf/data/abc:xyz=my-key/b
, /restconf/data/abc:xyz=my-key/c
или же /restconf/data/abc:xyz=my-key/d
где my-key - это ключ записи экземпляра списка, который вы хотите запросить.