Действительно ли JAX-RS подходит как платформа MVC?

JAX-RS имеет некоторую поддержку MVC, но интересно, является ли JAX-RS действительно хорошим выбором создать веб-приложение для человеческого использования.

Если пользователь вводит неправильную или неполную информацию в форму, она должна быть отображена снова как с Grails или Калиткой. Существует ли удобный способ сделать это с JAX-RS?

Насколько я знаю, что отображение URI не работает правильно, если не все обязательные параметры даны или существуют проблемы преобразования типов (с Датой, например). Это корректно?

Есть ли поддержка интернационализировавших шаблонов?

Вот пример для простого основанного на JAX-RS приложения GUI. Но это действительно просто, и вещь как i18n и проверка не обсуждена.

15
задан Bill the Lizard 29 July 2012 в 01:20
поделиться

4 ответа

В этом есть много вопросов, я дам мой взгляд на два из них.

«Интересно, действительно ли JAX-R RS действительно хорошим выбором для создания веб-приложения для использования человека».

веб-сервисы обычно предназначены для машин для взаимодействия, хотя я бы поспорил, что это обычно люди, которые должны программировать Взаимодействия - это необходимо сравнить с мылом, где в данный момент намного больше возможностей для сгенерированного машины кода из WSDL.

«Если пользователь вводит неправильную или неполную информацию в виде«

  • , то в рестаю в веб-сервисе HTTP, который принимает представление HTML-формы, вы должны вернуть ошибку 400 HTTP, потому что клиент предоставил представление, которое не соответствует Представительство вашего обслуживания ожидает - это зависит от клиента справиться с ошибкой.
1
ответ дан 1 December 2019 в 04:53
поделиться

Если я использую ORM, я обычно использую sqlite в базе данных памяти для тестирования своих приложений, так как у меня нет накладных расходов на настройку макетов и ожидаемых результатов. Есть ускорение над использованием фиктивной базы данных, но я не ожидаю, что это будет быстрее, чем использование макета. Если бы я использовал адаптер SQL, я бы, вероятно, использовал макет, поскольку в противном случае мне, вероятно, пришлось бы переписать вызовы.

-121--4321117-

Чтобы решить, что ваш предмет электронной почты слишком длинный, чтобы вводить его каждый раз. Я внедрил библиотеку StringScan Ruby.

require 'strscan'    
def signup!(user, &block)    
self.email = user[:email] unless user[:email].blank?    
str = StringScanner.new(self.email)    
str.scan_until(/@/)    
str.pre_match    
self.login = str.pre_match

и т.д.

Затем просто измените метод входа, чтобы разрешить электронной почте или имени входа соответствовать паролю.

Это работает так же, как google или mobileme. Пользователь может просто ввести свое имя пользователя электронной почты (т. е. имя пользователя вместо username@gmail.com.)

-121--907497-

JAX-RS является рамкой Java EE RESTful. JavaServer Faces (JSF) - рамка Java EE MVC. Он поддерживает все, что вы упомянули в вашем вопросе: возврат в ту же форму при ошибке, i8n/l10n и гораздо больше. Для получения дополнительной информации о JSF см. Руководство по Java EE 6, часть II, главы 4-9 .

С JAX-RS можно выполнять несколько MVC, но это не полноценная рамка MVC. Та же история продолжается, что вы можете сделать немного RESTful с JSF, но это не полноценная рамка RESTful.

Если вы хотите лучшего из обоих миров, я думаю, вам действительно нужно направиться к Ruby on Rails или Groovy on Rails .

2
ответ дан 1 December 2019 в 04:53
поделиться

Или воспользуйтесь интеграционным подходом, чтобы получить лучшее из обоих миров: JAX-RS + MVC.

Реализация JAX-RS в JBoss RESTEasy интегрируется со Spring MVC. См. http://www.jboss.org/resteasy

Вот небольшой учебник по RESTEasy + Spring MVC: http://java.dzone.com/articles/resteasy-spring

2
ответ дан 1 December 2019 в 04:53
поделиться

Да, вы можете, но вы должны очистить голову от старой модели публикации страниц и начать думать о своем приложении как об отключенном пользовательском интерфейсе, который взаимодействует с RESTful SOA. Когда данные формы вводятся, они отправляются в конечную точку службы, если данные неверны, тогда вы отвечаете с ошибкой, и пользовательский интерфейс обрабатывает эту ошибку. Вы не отправляете формы на сервер в традиционной модели постраничной публикации, а скорее делаете RPC-вызовы в свою внутреннюю систему. Ваше представление полностью отделяется от остальной части стека MVC. Это делает замену представления настраиваемой мобильной системой или системой IVR чрезвычайно простой.

Если пользователь вводит неправильную или неполную информацию в форме, она должна отображаться снова, как в Grails или Wicket. Есть ли удобный способ сделать это с помощью JAX-RS?

В многофункциональном интернет-приложении вам не нужно повторно заполнять данные, потому что вы никогда не покидали страницу, выполняется вызов XHR на сервер, и либо отправляется успешное сообщение 200 назад или ошибка. Затем пользовательский интерфейс решает, что делать, на основе этого ответа, но страница все еще не повреждена, потому что вызов был вне диапазона из основного потока пользовательского интерфейса.

5
ответ дан 1 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: