2015-05-04 5 views
0

Я строю 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/>), оставив все остальные форматы (заголовки, ссылки, списки и т. Д.) По усмотрению клиента.

Я настраиваю себя на скользкий склон?

ответ

0

Я не думаю, что это лучшая идея. Javascript - это в основном JSON, поэтому, когда вы возвращаете JSON из своего API, вы можете легко разобрать его на клиенте. А также вы можете легко подключить других клиентов на других языках. Конечно, вы можете сделать это и с Markdown, но это не лучшее решение для api, если вам нужно работать с этим api в javascript. JSON широко используется для ответов api, и я могу только рекомендовать его вам.

+0

быть честным, я не понимаю вашего ответа на все , javascript * не json *, а уценка - не что иное, как текст, смешанный с небольшим количеством html. Не существует синтаксического анализа, связанного с передачей ajax, и если он был отправлен сам по себе, это ничем не отличается от отправки любого другого html – charlietfl

+0

@tomas @charlietfl Чтобы уточнить, я все еще обертываю весь ответ в JSON '{" status ":" error "," message ":" Пожалуйста, проверьте свои входы. "," errors ": [{" message ":" ** {0} ** не является действительным номером телефона "," args ": [" 5555555 "]} ]} ' – lyma

+0

Я этого не понимал.Вы используете json, и для форматирования вы отправляете сообщение с уценкой сообщения. Я думаю, что все в порядке. Я думал, что вы хотите создать целую апи и отправить только текстовые отступы. –

0

Мое отношение, если браузер делает это, и это безопасно и безопасно ... почему бы и нет!

Markdown - это просто текст в любом случае с небольшим количеством сочетаний html. Я не вижу каких-либо недостатков, чтобы сделать это

Вы могли бы рассмотреть вопрос о направлении его в JSon обертку, а затем вы можете включать другие свойства наряду с источником уценки

Смежные вопросы