4.6.1. Plain Patch

普通的补丁机制将消息体的内容与目标资源进行合并。 普通补丁的消息体必须存在,并且必须由媒体类型“application/yang-data+xml”或“application/yang-data+json”表示。

普通补丁可用于创建或更新目标资源中的子资源,但不能删除它们。 请参阅[YANG-Patch]了解支持删除子资源的备用媒体类型。 YANG Patch媒体类型允许在单个PATCH方法中的多个子操作(例如,“merge”,“delete”)。

如果目标资源表示一个YANG叶子列表,那么PATCH方法不能改变叶子列表实例的值。

如果目标资源表示一个YANG列表实例,那么消息体表示中的关键叶子值必须与请求URI中的关键叶子值相同。 PATCH方法不能用来改变数据资源实例的键叶值。

在服务器处理普通补丁之后,响应将返回给客户端,如4.6节所述。

例:

若要替换“album”资源中的“year”字段(而不是使用PUT方法替换整个资源),客户端可能会发送一个普通的修补程序,如下所示:

  1. PATCH /restconf/data/example-jukebox:jukebox/\
  2. library/artist=Foo%20Fighters/album=Wasting%20Light HTTP/1.1
  3. Host: example.com
  4. If-Match: "b8389233a4c"
  5. Content-Type: application/yang-data+xml
  6. <album xmlns="http://example.com/ns/example-jukebox">
  7. <year>2011</year>
  8. </album>

如果该字段已更新,则服务器可能会做出如下响应:

  1. HTTP/1.1 204 No Content
  2. Date: Thu, 26 Jan 2017 20:56:30 GMT
  3. Server: example-server
  4. Last-Modified: Thu, 26 Jan 2017 20:56:30 GMT
  5. ETag: "b2788923da4c"