Возможен ли RESTful JSF?
Недавно я сел за портирование простого приложения Rails, которое у меня есть, на JSF (используя Seam), чтобы почувствовать, в чем я буду более продуктивен. Приложение Rails - это RESTful, что мне нравится. Начав работать с JSF, я с удивлением узнал, возможно, неправильно, что JSF поддерживает только POST, что делает его по сути не RESTful.
Я немного искал, но не смог найти удовлетворительного ответа. JSF/Seam кажется очень популярным, но для меня не имеет смысла запрещать все HTTP-методы, кроме POST. Правда ли, что JSF по своей природе не допускает RESTful-архитектуру, или я ошибаюсь, и RESTful JSF возможен (по своей сути или через плагин)?
4 ответа
Вот сообщение в блоге, которое прорабатывает этот вопрос, хотя и не приводит к каким-либо твердым выводам.
По моему личному опыту, JSF/Seam на самом деле не очень популярны, во многом из-за такого рода проблем. Кажется, что изо всех сил стараюсь абстрагироваться от сущности сети, а затем ломает такие вещи, как GET
, Исправление (для любой проблемы, с которой вы сталкиваетесь) всегда "приходит в следующей версии" или "на самом деле не проблема, если у вас есть хорошие инструменты". YMMV, но я, вероятно, посмотрю на другой стек.
Я слышал хорошие вещи о Restlet, и я вижу, что Struts 2 имеет плагин REST. В Spring 3 Spring MVC добавила поддержку REST. Я работал с Grails, и это делало RESTful-вещи довольно простыми. Он имеет дополнительный бонус, что он должен быть вам очень знаком, так как вы имеете опыт работы с Rails.
JSF - это основанная на компонентах структура, а не основанная на действии. URL-адреса определенно связаны с действием, поэтому, если вы хотите создать веб-приложение RESTful, JSF, возможно, не то, что вам нужно.
Смотрите также:
JSF со швом может сделать хорошо. Это зависит только от того, что вы хотите с ним делать. JSF, как правило, использует почту, чтобы получить полевые данные на сервер. Много JSF работает с почтой. Но вы, безусловно, можете использовать GET, используя параметры страницы шва или даже просто добраться до базового объекта HTTPRequest.
Теперь большой RESTful architecutre, да, не очень хорошо работает с JSF. Не стесняйтесь, однако, использовать JSF для вашего пользовательского интерфейса и JAX-RS для вашего RESTful API. Оба могут жить счастливо рядом друг с другом.
В зависимости от ваших конкретных требований (REST в качестве API или более в качестве средства для получения закладок URL), Seam находится дальше, чем лидерство. Статья разработчиков Seam находится по адресу http://relation.to/Bloggers/RESTSupportInLatestSeam21 где демонстрируются новые функции REST. Среди прочего, как вы можете предоставить полный доступ к сущности через RESTful API всего с четырьмя строками XML.
Если вы просто выбираете закладку, вам все равно придется тщательно спроектировать, как вы связываете вещи (вместе) на страницах и потоках JSF, хотя в Seam 2.2 были добавлены некоторые функции, чтобы упростить эту задачу.