2017-02-17 104 views
0

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

错误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响应相同的级别。

我有点无知,因为如何处理这种情况?有没有任何设计模式或任何工作?

一些指导表示赞赏。

+0

对于相同的请求有效载荷? –

+0

@Amit Kumar Ghosh - 是...请求结构对于所有情况都是一样的。 – Divs

+0

@Divs您是否在使用RestTemplate来消耗这些资源? – Edd

回答

-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 
} 
+0

这个问题提到我的申请是消费者而非生产者。 – Divs

1

没有“标准”方式来处理这个问题,但通常在这种情况下你应该做的是阅读API的文档。

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

也许API文件发出每种类型的错误。但是,如果没有人能够以一种更好的方式来处理这些类型的错误,那么您可能只需查看响应主体并根据给出的内容决定如何解析它。

相关问题