考虑下面的杨定义,模块test
:
list machine {
key "name";
leaf "name" {
type string;
}
}
在数据树:
"machine" : [
{ "name": "a" },
{ "name": "b" },
{ "name": "c" }
]
我想知道,如果下面的请求符合RESTCONF?
GET /restconf/data/test/machine
这一请求有望恢复所有的列表实例。
我有这个问题,因为我没有从RESTCONF的话清醒的认识。 在RESTCONF 3.5.3 ,
如果路径中表达一个数据节点是杨列表节点,则该列表( 如果有的话 )的键值必须根据下面的规则进行编码:
o对于表示杨列表必须使用一个路径段[RFC3986]被编码数据资源的关键叶值。
o如果只有一个键叶值,路径段被具有列表名,接着是“=”字符,接着是单个密钥叶子值构成。
的(if any)
是指以下两种含义是哪一个? (在key
语句是不是非配置的必备list
。因此,有keyed lists
和non-keyed lists
。)
用户可以自由地对密钥列表指定键值。 的
(if any)
是关于“如果指定键值。” 如果他们然后指定键值必须遵循有关键值的规则。 如果他们不然后指定你没有遵循有关键值的规则。 就拿我杨的定义,例如,这两个请求都是正确的:GET /restconf/data/test/machine // get all list instances GET /restconf/data/test/machine=a // get the list instance keyed "a"
用户必须为密钥列表指定键值。 的
(if any)
是关于“如果列表键或没有。” 在这样的认识,就会有:GET /restconf/data/test/machine // wrong request, can't get all list instanecs GET /restconf/data/test/machine=a // ok, get the list instance keyed "a"
第二理解为在相同的部分,用于叶列出了类似的词:
如果路径中表达一个数据节点是叶杨列表节点,则叶列表值必须根据下面的规则进行编码:
○对于叶列表中的标识符必须使用一个路径段[RFC3986]来编码。
○路径段被具有leaflist名,接着是“=”字符,接着是leaflist值(例如,/ restconf /数据/顶leaflist = fred的)构成。
对于叶表中的单词没有(if any)
,所以你不能使用像一个URL /restconf/data/top-leaflist
。 你必须使用=fred
指定叶列表实例。 所以,如果叶列表实例不能作为一个整体进行检索,为什么清单实例可以被作为一个整体(在认识1)检索到的? 叶列表实例和列表实例都是一个数据资源,它们在概念上等同。
谢谢,