【发布时间】:2015-01-31 06:22:53
【问题描述】:
调用一些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 字段是否合适。它确实向最终用户揭示了一定程度的实施。这算不算
- 没有什么特别的问题
- 只是一个糟糕的外观问题,不会造成严重问题,最终用户无法阅读
- 绝对需要修复的潜在安全风险
【问题讨论】:
-
4.它确实揭示了有关实现的 TMI,但它是可读并且没有特殊问题(您将一个字符作为“数量”传递,由于显而易见的原因这是无效的。
-
也许 API 应该验证输入值并仅返回人类可读的错误消息,而不是实现细节(可能在调试模式下)。我会选择 3。查看更多讨论 here。我认为所有异常/错误都应该被记录下来,而不是向外界透露。
标签: rest asp.net-web-api