当前位置 : 主页 > 网页制作 > HTTP/TCP >

http – 在后退按钮后保持跟踪

来源:互联网 收集:自由互联 发布时间:2021-06-16
我想第一次使用REST方法编写一个Web应用程序订单系统.当事情被发布到页面时,我理解“消息ID”的概念,但是这种情况出现了.一旦用户发布到Web应用程序,您就可以使用附加到URI的ID来跟踪
我想第一次使用REST方法编写一个Web应用程序订单系统.当事情被发布到页面时,我理解“消息ID”的概念,但是这种情况出现了.一旦用户发布到Web应用程序,您就可以使用附加到URI的ID来跟踪他们的状态,但是当他们没有任何id时,如果他们点击浏览器的后退按钮到应用程序的入口点会发生什么?然后他们在交易中失去了他们的状态.

我知道你总是可以给他们一个cookie但你不能这样做,如果他们关闭了cookie,最坏的情况是在这里思考,他们也关闭了javascript.

现在,我理解答案可能是“是的,那就是将要发生的事情”,这就是故事的结局,我可以忍受这一点,但是,对于这个新手,有什么我想念的吗?

答案是您的应用程序(在REST方案中)根本无法跟踪发生的情况.所有状态都由客户端管理,状态转换通过URI导航实现. REST的“状态转移”部分是指客户端导航到新状态的新URI.

根据HTTP规范和REST方法,使用GET访问的URI实际上是只读操作.这意味着如果客户端“备份”到某个先前的URI,则“最差”发生的是另一个GET,并且会加载更多数据.

假设客户端执行此操作(使用高度简化的伪HTTP)…

获得//site.com/product/123

这将检索关于产品ID 123的信息(或可能是页面),其可能包括对URI的引用,该URI可用于将该项目发布到用户的购物车中.因此用户决定购买该物品.再次,它过于简单,但:

POST //site.com/shoppingcart/
{productid = 123}

从此返回可能是购物车的表示,或者对添加的项目的引用(可以在购物车URI上使用DELETE再次删除项目),或者其他各种事物(例如更深入的XML描述)购物车内容与其他URI指向购物车项目并返回原始产品).全取决于你.

但“状态”是由客户正在做的任何事情来定义的.它根本不在服务器上跟踪,但您肯定会在数据库中保留一段购物车内容一段时间. (两年后我曾回到一个网站,我的购物车项目仍在那里……)但是由他来跟踪ID.对于您的服务器应用程序,它只是另一条记录,可能是某种过期.

这样您就不需要cookie,而javascript完全依赖于客户端实现.在没有脚本的情况下构建一个体面的REST客户端很困难 – 你可能用XSLT构建一些东西并且只从服务器返回XML,但这可能比任何人都需要的更痛苦.

起点是真正了解REST,然后设计系统,然后构建它.它绝对不适合像大多数其他系统那样(正确或错误)在运行中构建它.

这是一篇优秀的文章,它让你对REST有一个相当“纯粹”的看法,而不会过于抽象而且不会让你陷入困境:

http://www.infoq.com/articles/subbu-allamaraju-rest

网友评论