Как заменить сеанс апатридом?

63
5

Итак, я пытаюсь создать веб-архитектуру корзины покупок в рамках отдыха, где я изо всех сил стараюсь использовать хранилища браузеров для использования в качестве альтернативы сохранению состояния.

Я попробовал API window.localStorage и window.sessionStorage(), но в случае приватного режима просмотра в Safari и Opera он не удался.

Так может ли кто-нибудь помочь в определении других методов, с помощью которых я могу поддерживать состояния в архитектуре, основанной на отдыхе?

спросил(а) 2021-01-19T16:08:02+03:00 6 месяцев, 1 неделя назад
1
Решение
63

Для хранения состояния приложения вам не нужны сеансы. Пользовательские ресурсы.

При подходе было бы моделировать каждую корзину покупок как ресурс с уникальным идентификатором:

/shop/shoppingcarts/E73AC56C-BDF7-11E5-81F1-8E2EDB915C80

Клиентское приложение в браузере прочитало бы этот ресурс:

GET /shop/shoppingcarts/E73AC56C-BDF7-11E5-81F1-8E2EDB915C80

Он добавит товар в корзину:

POST /shop/shoppingcarts/E73AC56C-BDF7-11E5-81F1-8E2EDB915C80/items

{
"itemId": "1234",
"quantity": 1
}

Он будет перечислять содержимое корзины покупок:

GET /shop/shoppingcarts/E73AC56C-BDF7-11E5-81F1-8E2EDB915C80/items

[
{
"itemId": "1234",
"title": "Some nice item",
"quantity": 1,
"price", 12.34,
"priceTotal": 12.34
},
{
"itemId": "9876",
"title": "Some other nice item",
"quantity": 2,
"price", 0.99,
"priceTotal": 1.98
}
]

Веб-приложение удалит элемент из корзины:

DELETE /shop/shoppingcarts/E73AC56C-BDF7-11E5-81F1-8E2EDB915C80/items/9876

Я думаю, вы поняли.

ответил(а) 2021-01-19T16:08:02+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема