【发布时间】:2018-04-03 20:32:24
【问题描述】:
以下是我的 API 返回给客户端的错误响应:
{
"statusCode": "400",
"errors": [
{
"errorCode": "50009",
"fieldName": "bookingDate",
"errorMsg": "Input bookingDate must lie in the bracket: 20 Jan - 27 Jan, 2018"
}
]
}
客户端无法在 UI 中显示 API 返回的 errorMsg,但它需要括号信息,即(2018 年 1 月 20 日 - 2018 年 1 月 27 日),同时形成一些更有意义的 errorMsg。因此,客户端必须从 API 响应中提取括号信息。
但是,如果更改了 errorMsg 的文本,这可能会破坏客户端的功能。 所以,为了让客户的生活更轻松,我想稍微改变一下错误响应:
{
"statusCode": "400",
"errors": [
{
"errorCode": "50009",
"fieldName": "bookingDate",
"errorMsg": "Input bookingDate must lie in the bracket: 20 Jan - 27 Jan, 2018",
"startDate": "20 Jan 2018",
"endDate": "27 Jan 2018"
}
]
}
那么,将 startDate 和 endDate 添加到错误响应中是正确的方法(只是为了客户的利益)还是有其他更好的方法?
提前致谢。
【问题讨论】:
-
为什么客户端不能显示errorMsg?输入验证 REST API 的一个很好的模式是返回至少一条人类可读的验证错误消息,该消息不会泄露内部信息(例如堆栈跟踪等)
-
这个API的客户端是支持多种语言的UI。此 API 以英语返回 errorMsg,因此当用户选择的语言是德语时,无法在 UI 中显示。