对于调用某些HTTP Rest服务API时的错误情况,响应如下:
{
"statusCode": "400",
"error": "Bad Request",
"message": "Can not construct instance of java.math.BigDecimal from String value 'a': not a valid representation\n at [Source: org.apache.cxf.transport.http.AbstractHTTPDestination$1@2f650e17; line: 1, column: 2] (through reference chain: com.foo.services.dto.request.ItemToUpdate[\"quantity\"])",
"validation": {
"source": "PAYLOAD",
"keys": ["key"]
},
"errorIdentifiers": [],
}
我想知道响应中的message
字段是否合适。它确实向最终用户揭示了某种程度的实施。这被视为
答案 0 :(得分:1)
我认为你应该只记录服务器端的堆栈跟踪。 IMO它的技术提示(此外,也许最终用户甚至不使用Java与您的API进行交互),并且您的API的最终用户唯一感兴趣的是在提供的数据中存在验证错误。 / p>
另一个注意事项是您在响应有效负载中使用状态代码和statusmessage。我认为你不需要复制它,因为它已经存在于响应中。
我会建议一条错误信息:
{
"messages": {
"quantity": "this must be a valid number"
}
}
我对字段messages
使用JSON结构,因为在提供的数据中可能存在多个验证错误。请注意,这只是一个建议,您可以将其扩展到您的确切需求。
希望它有所帮助。 亨利