Законно ли POST/PUT/PATCH список и лист-лист в RESTCONF?
Это дополнительный вопрос этого поста. Из ответа @predi я знаю, что это законно GET
URL-адрес, целевой ресурс которого представляет собой список или лист-список и DELETE
не могу использовать такой URL. То есть, учитывая следующие определения ЯНГ:
list machine {
key "name";
leaf "name" {
type string;
}
}
Запрос GET /restconf/data/test/machine
законно Запрос DELETE /restconf/data/test/machine
незаконно
Я хочу подтвердить, если другие методы, такие как POST
, PUT
или же PATCH
можно использовать список или лист-лист в качестве целевого ресурса URL в запросах. Например, являются ли приведенные ниже запросы законными в RESTCONF?
POST /restconf/data/test/machine
PUT /restconf/data/test/machine
PATCH /restconf/data/test/machine
В настоящее время я думаю, что POST
а также PUT
запросы являются незаконными и не уверены в PATCH
запрос.
Вот мои причины:
От 3.5:
Контейнеры, листы, записи в листах, записи в списках, узлы anydata и anyxml - это ресурсы данных.
Таким образом, лист-лист или список не является ресурсом данных. Ресурсом данных является только запись списка или запись списка.
С 4.4:
Метод POST отправляется клиентом для создания ресурса данных или вызова ресурса операции. Сервер использует целевой тип ресурса, чтобы определить, как обрабатывать запрос.
+-----------+------------------------------------------------+ | Type | Description | +-----------+------------------------------------------------+ | Datastore | Create a top-level configuration data resource | | Data | Create a configuration data child resource | | Operation | Invoke an RPC operation | +-----------+------------------------------------------------+ Resource Types That Support POST
Таким образом, указанный целевой тип ресурса DATA
ресурс данных.
От 4.5:
Метод PUT отправляется клиентом для создания или замены целевого ресурса данных.
Я не нашел подобных описаний в разделе PATCH. Раздел PATCH просто говорит о target resource
не target data resource
или же data resource
,
Но есть и неоднозначные слова в разделах PUT и PATCH:
Если целевой ресурс представляет собой листовой список YANG, то метод PUT НЕ ДОЛЖЕН изменять значение экземпляра листового списка.
Если целевой ресурс представляет листовой список YANG, то метод PATCH НЕ ДОЛЖЕН изменять значение экземпляра листового списка.
Кажется, что целевой ресурс может представлять собой листовой список, но позже он говорит: "НЕ ДОЛЖЕН изменять значение экземпляра листового списка". Если в качестве целевого ресурса используется лист-лист, то PUT или PATCH не должны изменять какой экземпляр лист-листа?
Учитывая это:
leaf-list names {
type string;
}
и JSON-кодированные экземпляры:
names: ["a", "b", "c"]
Существует три экземпляра листового списка: a, b и c. При использовании:
PUT .../names
тогда вы можете только создать или заменить весь лист-лист, как вы можете MUST NOT change the value of the leaf-list instance
?
Спасибо,