我的团队目前正在做一个Web项目,前端使用后端提供的json api。我们使用的技术是 Spring Boot 和 AngularJS。该 API 具有如下所示的标准错误格式:
{
"errorCode": "1111",
"message": "Error occurred: some error message",
"developerMessage": "message for developer"
}
错误响应还可以包含可选的字段验证错误列表。 问题是我们应该在哪里进行用户错误消息的翻译?后端是否应该根据请求的区域设置返回已翻译的消息,或者前端是否应该使用 errorCode 及其 i18n 机制。我们在后端(Spring i18n 支持)和前端(角度翻译)都有 i18n 机制。
最佳实践是什么?每种方法的优点和缺点是什么?任何建议表示赞赏。
我会通过本地化前端的所有内容来做到这一点。后端将发送 id,然后客户端应用程序将其转换为本地化文本。
好处:
缺点:
此外,一旦规模扩大,并且您拥有多个后端系统,上述方法就可以很好地工作,因为所有错误生成器都负责处理各自的本地化。
为了构建可靠的应用程序,我们应该实现具有“前向兼容性”的错误协议。这意味着客户端应该能够识别并显示这些错误的错误消息,但目前尚不清楚。
这一点将我们引向“后备消息”。这意味着 - 对于老客户端,来自后端的所有错误都应包含
error
和
errorFallbackMessage
。并且
errorFallbackMessage
应该本地化(例如,基于
Accept-Language
标头)。