相同的REST端点返回不同的错误响应对象

时间:2017-02-17 12:00:07

标签: json rest design-patterns spring-boot response

我的客户端应用程序是REST端点的使用者,生成JSON响应,可以返回具有不同场景的不同结构的错误响应;

错误1

{ 
    "errorCode" : "XXXX"
    "errorMessage" : "Validation Failed"
}//Note the lack of higher order key here; it's flat

错误2

{
  "apiError" : {
    "errorCode" : "XXXX"
    "errorMessage" : "Validation Failed"
  }
}//Note "apiError" is an object 

错误3

{
  "apiError" : [{
    "errorCode" : "XXXX"
    "errorMessage" : "Validation Failed"
  }]
}//Note "apiError" is a Collection 

正如我们在上面看到的,几个错误响应具有相同的键但具有不同的返回类型;

"的errorCode"嵌入在不同的密钥中,并且在全局中与JSON响应不同。

我对如何处理这种情况有点无能为力?是否有任何设计模式或围绕它的任何工作?

赞赏一些指导。

2 个答案:

答案 0 :(得分:1)

没有'标准'处理这个的方法,但通常你应该在这个场景中做的是阅读API的文档。

一个好的API可能会对每种类型的错误使用相同的json格式,但如果他们不这样做,他们至少应该记录它。一个好的API可能也为每种类型的错误使用不同的媒体类型(因此您可以检查Content-Type以找出如何解析错误消息)。

当发出每种类型的错误时,可能是API文档。但是,如果没有一个指导您以更好的方式以一般方式处理这些类型的错误,您可能只需要查看响应主体并决定如何根据给您的内容来解析它。

答案 1 :(得分:-1)

在设计restful API时,您需要使用http状态代码。有关此link.

的相关信息

样本回复如下。

成功场景(一个或多个场景);

{
    "errors": null,
    "results": [{
        "key": "value"
    }]
}

错误情景;

{
    "errors": [{
        "code": "ERR-500",
        "message": "Error text"
    }],
    "results": null
}

多重错误情景;

{
    "errors": [{
        "code": "ERR-500",
        "message": "Error text"
    },{
        "code": "ERR-403",
        "message": "Error2 text"
    }],
    "results": null
}