Если cookie найден, получить данные или создать cookie, это хорошая логика? - PullRequest
0 голосов
/ 17 марта 2010

У меня есть действие, которое в основном добавляет товар в корзину. Единственный способ узнать корзину - это проверить куки, вот поток логики, пожалуйста, дайте мне знать, если у вас возникнут проблемы ...

/ order / add / [id] вызывается через GET

Действие проверяет наличие cookie, если cookie не найдено, оно создает новую корзину, записывает идентификатор в cookie и добавляет элемент в базу данных с отношением к созданной корзине

если cookie найден, он получает идентификатор корзины из cookie, получает объект корзины, добавляет элемент в базу данных с отношением к найденной корзине

так что это в основном как ...

action add(int id){

if(cookie is there)
    cart = getcart(cookievalue)
else
    cart = makecart()
    createcookie(cart.id)

additemtocart(cart.id, id)

return "success";
}

Кажется, верно? Я не могу найти что-то другое, что имело бы смысл.

Ответы [ 3 ]

1 голос
/ 17 марта 2010

Ваша логика выглядит хорошо, хотя я бы подумал, нужно ли вам хранить содержимое корзины в базе данных. Если у вас нет веской причины, я бы соблазнился просто добавить ее в сессию.

Я бы также рассмотрел создание пользовательского связывателя модели для объекта корзины, который будет либо передавать новый экземпляр корзины, либо один экземпляр из файла cookie посетителей. Таким образом, ваш контроллер выглядит намного проще, например:

public ActionResult Add(Cart cart, int id)
{
    AddItemToCart(cart, id);
    return View();
}

Кроме того, в приложении RESTful в идеале следует использовать метод POST для добавления в корзину.

1 голос
/ 17 марта 2010

Выглядит хорошо для меня.

/ order / add / [id] вызывается через GET

1) Корзина - это еще не заказ, а просто терминология.

2) Для изменения данных предпочтительно использовать POST (PUT).

3) Сохраняя ваши временные корзины в базе данных, не забудьте запланировать запуск некоторой службы очистки для удаления старых брошенных корзин.

0 голосов
/ 17 марта 2010

О (единственной) вещи, о которой я могу подумать, нужно ли вам что-то хранить в базе данных.

Если вы разрешите людям просматривать на одном компьютере, а затем оформлять заказ с другого, тогда вам обязательно нужно сохранить выбранные элементы в базе данных.

Если, однако, вы этого не разрешаете, вы можете сохранить элементы, выбранные в файле cookie, который сохраняет отключение базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...