使用angular度转换处理API错误的最佳做法

我有一个API <> SPA架构。

但我不知道在哪里翻译,特别是当发送错误。

我宁愿只在我的angular度应用程序翻译文本(i18n等)。 API只能发送英文文本。

但我不知道如何

想象一下这样的错误消息:(nodejs + restify)

server.get('/api/', function (req, res, next) { return next(new server.errors.UnauthorizedError('You are not authorized')); }); 

这将发送一个401与json的身体。

如果API只会说英文,那么我怎样才能在SPA上翻译呢?

我怎么能把这个翻译方法之一:

<span>{{message | translate}}</span>

要么

<span>{{lang.message}}</span>

当然,我使用Angular的$ translateProvider,并且在其中有一个定位文件。

有没有其他的方式发送语言键? 喜欢这个:

 server.get('/api/', function (req, res, next) { return next(new server.errors.UnauthorizedError('NOT_AUTHORIZED_ERROR')); }); 

有了这个我可以有一个locate-en.json文件,如:

 { errors: { NOT_AUTHORIZED_ERROR: "You are not authorized" } } 

我觉得这种不寻常的

把代码和消息放在$ translateProvider中,并从本地存储中读取错误,如下所示:

  app.config(['$translateProvider', function ($translateProvider) { $translateProvider.translations('en', { error : 'messageEN' }) $translateProvider.translations('de', { error : 'messageDE' }) $translateProvider.preferredLanguage('en'); // remember language $translateProvider.useLocalStorage(); }]); 

你有两个select:要么你认为你的客户端知道API可以抛出的所有错误。 如果API和客户端都是由同一个团队实现的,通常情况下就是这样。 在这种情况下,让你的API返回一个包含代码的错误对象:

 { "code": "unauthorized", "message": "some reason in english, usefull for debugging/logging" } 

然后使用这段代码来翻译客户端的错误:

 <span>{{error.code | translate}}</span> 

第二个选项是让API转换错误消息。 如果API可以在不知道客户端的情况下发展(并引发新的错误),则使用此选项。 当然,在这种情况下,您只能使用API​​支持的语言。

Interesting Posts