3.6.3. 编码操作资源错误

如果在尝试调用操作或操作时发生任何错误,则会返回“errors”媒体类型和相应的错误状态。

如果(1)RPC操作输入无效或(2)RPC操作被调用,但发生错误,那么服务器必须发送一个包含“errors”资源的消息体,正如3.9节定义的那样。

使用第3.6.1节中示例中的“reboot”的RPC操作,客户端可能会发送以下POST请求消息:

  1. POST /restconf/operations/example-ops:reboot HTTP/1.1
  2. Host: example.com
  3. Content-Type: application/yang-data+xml
  4. <input xmlns="https://example.com/ns/example-ops">
  5. <delay>-33</delay>
  6. <message>Going down for system maintenance</message>
  7. <language>en-US</language>
  8. </input>

服务器可能会回应一个“invalid-value”错误:

  1. HTTP/1.1 400 Bad Request
  2. Date: Thu, 26 Jan 2017 20:56:30 GMT
  3. Server: example-server
  4. Content-Type: application/yang-data+xml
  5. <errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf">
  6. <error>
  7. <error-type>protocol</error-type>
  8. <error-tag>invalid-value</error-tag>
  9. <error-path xmlns:ops="https://example.com/ns/example-ops">
  10. /ops:input/ops:delay
  11. </error-path>
  12. <error-message>Invalid input parameter</error-message>
  13. </error>
  14. </errors>

这里使用JSON编码显示相同的响应:

  1. HTTP/1.1 400 Bad Request
  2. Date: Thu, 26 Jan 2017 20:56:30 GMT
  3. Server: example-server
  4. Content-Type: application/yang-data+json
  5. { "ietf-restconf:errors" : {
  6. "error" : [
  7. {
  8. "error-type" : "protocol",
  9. "error-tag" : "invalid-value",
  10. "error-path" : "/example-ops:input/delay",
  11. "error-message" : "Invalid input parameter"
  12. }
  13. ]
  14. }
  15. }