2016-08-02 72 views
0

我正在使用新系统并构建我要返回的错误合约。我正在尝试关注OData v4 Error Response structureOData错误对象是否可以包含任意属性

由于这是一个C#服务,因此在Exception对象和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的“不良形式”?

回答

0

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

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

相关问题