Это дополнительный вопрос к этой записи.Из ответа @ predi я знаю, что допустимо GET
URL-адрес, целевой ресурс которого является списком или лист-списком, и DELETE
не может использовать такой URL.То есть, учитывая следующие определения YANG:
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
?
Спасибо,