Я много читал о REST и как сделать REST "правильным способом". Большинство ресурсов используют такие термины, как веб-службы RESTful или API RESTful, однако ни одно из них не упоминает веб-сайты RESTful. Я смущен этим, учитывая, что я думаю о веб-сайте и API как о двух разных вещах. Тем не менее, когда, например, при разработке веб-сайта с использованием Rails-структуры вам постоянно напоминают о том, как RESTful все (или должно быть).
Я получаю тот факт, что REST предоставляет множество преимуществ (его архитектурные свойства) для API (например, JSON API), но я просто не вижу, как преимущество веб-сайта - быть RESTful. В качестве простого примера рассмотрим функцию входа в систему. В режиме REST это можно смоделировать, создав модель сеанса с протоколированием в соответствии с созданием нового сеанса, выводом из строя сеанса и т.д. URL-адреса выглядят примерно так:
Prefix Verb URI Pattern Controller#Action
new_user_session GET /users/login(.:format) sessions#new
user_session POST /users/login(.:format) sessions#create
destroy_user_session DELETE /users/sign_out(.:format) sessions#destroy
Однако эти URL-адреса не очень удобны для пользователя. С точки зрения пользователей, имеет смысл просто иметь/путь входа в систему, где отображается форма входа. Это также легче запомнить. Но если мы сделаем карту URL таким образом, что они больше не являются (как) RESTful;/login определяет ресурс. Если да, то какой?
Другим примером является домашняя страница/домашний или просто /. Как это вписывается в REST? На большинстве веб-сайтов домашняя страница представляет собой mashup из многих различных видов информации и не идентифицирует ни одного ресурса. Например, это может быть страница, в которой перечислены новейшие продукты в каталоге и последняя дата регистрации; две совершенно несвязанные вещи. Как этот RESTful?
Я понимаю, почему использование RESTful API отдельно от веб-сайта имеет смысл, но моя путаница заключается в том, как REST применяется к веб-сайтам - если это даже делает.