我正在使用服务器上的Grails和客户端上的Angular构建SPA。
举一个简单的例子,假设有一个注册表单,该表单在将错误消息发送回用户之前先经过服务器端验证。目前,我正在Grails内置的i18n支持中,通过向message.properties中添加新的消息代码,如下所示:user.phone.error=[{2}] is not a valid phone number
我想为用户设置信息样式,因此我使用以下帮助函数将其替换为<strong/>
:
utils.formatMessage = function(message, args) {
return message.replace(/\[{(\d+)\}\]/g, function(_, idx) {
var msg += '<strong>';
msg += args[idx];
msg += '</strong>';
return msg;
});
};
这足够好,但是如果我想用
<strong/>
包裹某些文本,而用<em/>
包裹另一部分怎么办?我可以向我的messages.properties添加另一个表示法,例如
[[{0}]]
,但这似乎不是一个好的长期解决方案...如果相反,我利用Markdown来包装我的API响应:
(
**{2}** is not a valid phone number
),然后使用客户端库(例如Showdown或Angular Markdown Directive(使用Showdown))来解析响应?一方面,似乎很容易将API响应与表示层分离开来,但另一方面,我不认为Markdown会很快发展到任何地方,并且正如StackOverflow所证明的那样,它是如此简单。
当然,我会将用法限制为Emphasis(
<em/>
和<strong/>
),而其他所有格式( header ,链接,列表等)的选择都应由客户自行决定。我要把自己打滑吗?
最佳答案
我认为这不是最好的主意。 Java语言基本上是JSON,因此,当您从API返回JSON时,可以轻松地在客户端上对其进行解析。而且,您还可以轻松连接其他语言的其他客户端。当然,您也可以使用Markdown做到这一点,但是如果您需要在javascript中使用此api,它并不是api响应的最佳解决方案。 JSON被广泛用于api响应,我只能向您推荐。
关于angularjs - 返回带有markdown格式的API响应的设计不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30040879/