2013-04-10 4 views
9

Я видел много примеров того, что называется Spring REST, в основном это просто Spring MVC. Предоставлено, что с помощью JAXB и JAXON вы можете предоставить ответы XML и JSON, но есть больше REST, чем просто предоставление текстового ответа.Как Spring MVC представляет собой REST Framework?

Одна из основных проблем заключается в том, что не в этих примерах ничего не говорится о сеансе; приложение REST должно быть без сеанса, но Spring MVC, безусловно, заполнен сеансом.

Так ли Spring MVC каким-то образом отключает сеанс, или мы должны отключить сеанс, когда мы используем Spring MVC для реализации REST?

Если мы должны отключить сеанс; то как это делается?

+0

нам нужно обрабатывать сеансы –

+2

+1, себя, очень хороший вопрос – Jayy

ответ

9
  • Spring MVC не разрешает сеансы до тех пор, пока вы их не используете;

  • Я полностью согласен с тем, что так называемая «поддержка отдыха» весной должна была называться «хорошими URL-адресами и интеграцией с Джексоном», но в настоящее время она мало привлекательна для рынка (хотя симпатичные URL-адреса и JSON - единственная вещь люди ассоциируются с REST, что и сопоставление CRUD с http-глаголами).

  • REST - это архитектурный выбор, который не имеет ничего общего с сеансами (а не хорошими URL-адресами, ни json). Поскольку это скорее религия, чем реальная техника, никто не переведет ее для вас на определенный набор практик. Вы могли бы сеансы моделироваться как ресурсы, которые создаются, когда пользователь входит в систему и исчезает через некоторое время. И так далее.

+0

У вас есть источник, что Spring MVC не позволит сеансов, пока вы не использовать их? Я не могу найти источник, который упоминает об этом. Я полностью согласен с вашим вторым заявлением. Тем не менее, для третьего оператора без сеанса является фундаментальным свойством веб-службы REST; если ваш webapp использует сеанс, то вы не можете называть его REST вообще. – user1888243

+0

@ user1888243: ну, у всех нас есть ** самый авторитетный источник, а именно, источники :-) Вы можете grep его для появления «getSession» и посмотреть. Даже такие компоненты, как FlashMapManagers, стараются не открывать сеанс, пока это не будет неизбежно. С другой стороны, некоторые технологии, которые вы можете использовать с Spring MVC (например, Jasper), открывают сеансы по умолчанию. – fdreger

+2

@ user1888243: В статье Филдинга нет предложения, в котором говорится что-то отдаленно вроде «но помните! Даже если вы будете следовать моим словам в письме ... если вы используете куки-файл с именем JSESSIONID, вам не разрешается вызывать вашу заявку RESTful ». Заявка должна быть «без гражданства» в отношении того, что видят клиенты. За фасадом я могу использовать любые технические средства, которые мне нравятся, даже кэширование некоторого состояния и привязка его к некоторому клиенту. И наоборот: даже без использования сеанса и с самыми красивыми URL-адресами я могу сделать плохое, невосприимчивое приложение. – fdreger