gpt4 book ai didi

rest - 完全 RESTful(包括 HATEOAS)客户端可以在客户端状态下存储服务器提供的 URI 吗?

转载 作者:行者123 更新时间:2023-12-05 00:56:16 25 4
gpt4 key购买 nike

(注意:我假设 REST 服务使用 URI 来标识资源,我知道这并不是 REST 的严格约束)

根据我对 HATEOAS 的理解,除了初始入口点外,客户端不应假设任何有关服务提供的 URI 结构的信息(而应仅使用服务器以结构化方式提供给它的 URI)。这是否意味着客户端只能使用由最新请求提供给它的 URI,或者客户端可以跟踪在来自同一 session 的较早请求中收到的 URI?如果是前者,后者会违反哪个 REST 约束?

跟踪 URI 的两个示例:

  • 在照片查看应用程序中,我遍历照片列表,将某些照片的 URI 保存到列表中。然后,我导航到“马赛克”功能并将保存的 URI 中的所有照片加载到马赛克中。
  • 我浏览产品列表并将一些添加到我的客户端购物车中。完成后,我在 Orders 资源中创建一个新元素,其中产品按其 URI 指定的顺序排列。
  • 最佳答案

    我不确定你的开场白是什么意思:

    NB: I'm assuming a REST service that uses URIs to identify resources, I'm aware this isn't strictly a constraint of REST


    你的意思是超链接不必是 URI 吗?或者超链接不必指向资源?前者在技术上是正确的,但在 Internet 上,URI 是超链接的唯一形式,因此除非您考虑完全不同的内容,否则它们就是 URI。如果您说 REST 不需要 URI 标识资源,那么这是错误的。这正是他们在 RESTful API 中确定的内容。总是。

    无论如何,继续你的问题:

    Does this mean the client can only use URIs given to it by the latest request, or can the client keep track of URIs received in earlier requests from the same session?


    是的,客户端可以缓存以前的响应。 如果它们是“新鲜的”(根据 Expires 或 max-age header ),那么客户端可以立即使用它们。如果它们是“陈旧的”(超过最大年龄/到期时间),那么客户端可以使用条件请求(例如 If-Modified-Since)重新请求资源,但它不是必须的。

    您的示例均不构成 REST 违规。相反,它们都是系统简单性的绝妙例子!

    关于rest - 完全 RESTful(包括 HATEOAS)客户端可以在客户端状态下存储服务器提供的 URI 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13639110/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com