Относительно отдыха принцип "общаться без гражданства"
Один из ключевых принципов остальных не состоит в том, чтобы поддерживать состояние на сервере или общаться без сохранения состояния. Хочу посмотреть, как этот принцип работает в корзине? Так, скажем, если пользователь добавляет товары в корзину с сайта покупок. По моему мнению, сервер будет иметь некоторую реализацию, чтобы иметь корзину покупок в области сеанса, и пользователь отправит пост-звонок, чтобы добавить продукт в корзину покупок. Например, /shoppingcart/products/1. Теперь товары остаются добавленными в корзину (но не сохраняются в базе данных), пока пользователь не подтвердит оформление заказа. При подтверждении оформления покупки элементы корзины покупок сохраняются в базе данных на стороне сервера.
Не нарушает ли этот подход (размещение товара в корзине на стороне сервера, находящегося в области действия сеанса) принцип покоя? Если да, то как мы можем реализовать добавление товара в корзину, следуя принципу связи без сохранения состояния?
1 ответ
Корзина покупок должна рассматриваться как ресурс, а продукты добавляться / удаляться так же, как вы можете добавлять или удалять связи между любыми двумя ресурсами в REST. Вместо того, чтобы клиент сказал "теперь покупайте товары в моей корзине", клиент должен сказать "теперь покупайте товары в корзине #187462". Присвойте каждой корзине URL-адрес, и ваши операции будут работать с этим ресурсом вместо некоторого массива товаров, привязанного к текущему сеансу.
Альтернатива, которая также не имеет состояния, состоит в том, чтобы клиент отслеживал все элементы в корзине, но это означает, что пользователь не может оставить корзину (отказаться от нее) на одном компьютере и возобновить покупки на другом устройстве.
Приложение: Помните, что разрешения / контроль доступа могут быть назначены независимо. Конечно, у каждой корзины есть URL, но обязательно сделайте так, чтобы вошедший в систему пользователь мог видеть только ресурсы корзины, которые он создал.