Я строю SPA, используя Grails на сервере и Angular на клиенте.Неужели плохой дизайн возвращает ответ API, отформатированный с уценкой?
В качестве простого примера предположим, что есть форма регистрации, которая проверяется на стороне сервера перед отправкой сообщений об ошибках пользователю. В настоящее время я использую поддержку i18n, встроенную в Grails путем добавления новых кодов сообщений для messages.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 (которая использует всплывающее окно) для синтаксического анализа ответа?
С одной стороны, кажется очевидным отвязать ответ API от уровня представления, но с другой стороны, я не думаю, что Markdown собирается где-нибудь в ближайшее время и невероятно просто, как свидетельствует эта StackOverflow пост ,
Естественно, я бы ограничил использование Emphasis (<em/>
и <strong/>
), оставив все остальные форматы (заголовки, ссылки, списки и т. Д.) По усмотрению клиента.
Я настраиваю себя на скользкий склон?
быть честным, я не понимаю вашего ответа на все , javascript * не json *, а уценка - не что иное, как текст, смешанный с небольшим количеством html. Не существует синтаксического анализа, связанного с передачей ajax, и если он был отправлен сам по себе, это ничем не отличается от отправки любого другого html – charlietfl
@tomas @charlietfl Чтобы уточнить, я все еще обертываю весь ответ в JSON '{" status ":" error "," message ":" Пожалуйста, проверьте свои входы. "," errors ": [{" message ":" ** {0} ** не является действительным номером телефона "," args ": [" 5555555 "]} ]} ' – lyma
Я этого не понимал.Вы используете json, и для форматирования вы отправляете сообщение с уценкой сообщения. Я думаю, что все в порядке. Я думал, что вы хотите создать целую апи и отправить только текстовые отступы. –