首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果找到cookie,则获取数据,否则创建cookie,这是好的逻辑吗?

如果找到cookie,则获取数据,否则创建cookie,这是好的逻辑吗?
EN

Stack Overflow用户
提问于 2010-03-17 05:25:59
回答 3查看 264关注 0票数 0

我有一个行动,基本上添加一个项目到购物车,唯一的方式是通过检查cookie购物车是已知的,这是逻辑流程,请让我知道,如果你看到任何问题…

/order/add/id通过GET调用

操作检查cookie,如果未找到cookie,则创建一个新购物车,将标识符写入cookie,并将该项目添加到数据库中,并与创建的购物车建立关系

如果找到cookie,它将从cookie中获取购物车标识符,获取购物车对象,并将商品与找到的购物车的关系添加到数据库中

所以基本上就像..。

代码语言:javascript
运行
复制
action add(int id){

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

additemtocart(cart.id, id)

return "success";
}

看起来对吗?我真的不能想出另一种有意义的方式。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-17 05:53:03

您的逻辑看起来没问题,不过我会考虑是否需要将购物车内容存储在数据库中。除非你有一个很好的理由,否则我很想把它添加到会话中。

我还会研究为购物车对象创建一个自定义模型绑定器,它将传入一个新的购物车实例或从访问者cookie实例化的实例。这样你的控制器看起来就简单多了,例如:

代码语言:javascript
运行
复制
public ActionResult Add(Cart cart, int id)
{
    AddItemToCart(cart, id);
    return View();
}

此外,在RESTful应用程序中,理想情况下应该使用POST方法添加到购物车中。

票数 1
EN

Stack Overflow用户

发布于 2010-03-17 05:33:15

在我看来没问题。

GET调用

/order/add/id

1)购物车还不是订单,但它只是一个术语。

2)最好使用POST (PUT)来修改数据。

3)在数据库中存储临时购物车时,不要忘了安排一些清理服务运行,以清除旧的废弃购物车。

票数 1
EN

Stack Overflow用户

发布于 2010-03-17 05:46:53

关于(唯一)我能想到的是你是否需要在数据库中存储任何东西。

如果您允许人们在一台计算机上浏览,然后从另一台计算机上结帐,那么当然,您需要将所选项目存储在数据库中。

但是,如果您不允许这样做,那么您可以在cookie中保留所选的项,这样可以节省数据库访问时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2458278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档