【问题标题】:Can OData Error objects contain arbitrary propertiesOData 错误对象是否可以包含任意属性
【发布时间】:2016-08-04 01:09:33
【问题描述】:

我正在使用一个新系统并建立我将要返回的错误合同。我正在尝试关注OData v4 Error Response structure

由于这是一个 C# 服务,在异常对象和 OData 错误响应之间似乎有一个非常好的映射。但是,我们正在尝试确定错误响应对象是否可以包含其他任意属性。内部错误被明确声明为允许具有其他属性,因此以下内容有效:

{
  "error": {
    "code": "BadArgument",
    "message": "Previous passwords may not be reused",
    "target": "password",
    "innererror": {
      "code": "PasswordDoesNotMeetPolicy",
      "minLength": "6",
      "maxLength": "64",
      "minDistinctCharacterTypes": "2",
    }
  }
}

异常上的Data 属性很好地映射到此,我们可以将内部异常上的每个值转换为错误上的属性。因此,如果客户端向外部异常添加任意属性,是否可以将它们作为根属性公开。例如:

{
  "error": {
    "code": "BadArgument",
    "message": "PasswordDoesNotMeetPolicy",
    "target": "password",
    "minLength": "6",
    "maxLength": "64",
    "minDistinctCharacterTypes": "2",
  }
}

或者这样的东西通常被认为是 OData 的“坏形式”?

【问题讨论】:

    标签: c# odata


    【解决方案1】:

    如果您直接在error 对象上添加自定义属性,您将收到非标准错误响应。代码生成工具和第 3 方客户端将无法识别自定义属性。

    innererror 属性是一个扩展点。 spec says:“这个对象的内容是服务定义的。通常这个对象包含有助于调试服务的信息。”坚持innererror

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 2018-05-11
      相关资源
      最近更新 更多