(注意:我假设使用URI来识别资源的REST服务,我知道这不是REST的严格限制)
根据我对HATEOAS的理解,客户端不应该假设服务提供的URI结构,除了初始入口点(而应该只使用服务器以结构化方式提供给它的URI)。这是否意味着客户端只能使用最新请求提供给它的URI,或者客户端是否可以跟踪来自同一会话的先前请求中收到的URI?如果是前者,后者违反哪个REST约束?
跟踪URI的两个例子:
答案 0 :(得分:3)
我不确定你的开场词是什么意思:
注意:我假设一个使用URI来识别资源的REST服务,我知道这不是严格的REST约束
你的意思是超链接不一定是URI吗?或者超链接不必指向资源?前者在技术上是正确的,但在互联网上,URI是唯一的超链接形式,所以除非你正在考虑完全不同的东西,否则它们就是URI。如果您说REST不要求URI识别资源,那么这是错误的。这正是他们在RESTful API中识别的内容。总是
无论如何,继续你的问题:
这是否意味着客户端只能使用最新请求提供给它的URI,或者客户端是否可以跟踪来自同一会话的先前请求中收到的URI?
是的,客户端可以缓存以前的回复。如果它们是“新鲜的”(根据Expires或max-age标题),则客户端可以立即使用它们。如果它们是“陈旧的”(超过最大年龄/到期时间),那么客户端可以使用条件请求(例如,If-Modified-Since)重新请求资源,但它不必。(/ p>
您的示例都没有构成REST违规。相反,它们都是系统简单性的精彩例子!