REST和URI缓存

Ric*_*aca 6 rest caching uri hateoas

据我所知,使用超文本驱动的 RESTful Web服务,客户端不应该知道有关服务器URI布局的任何信息,除了几个众所周知的入口点.这应该使服务器能够控制自己的URI空间并减少与客户端的耦合.

当服务的客户端发送成功请求以创建新资源时,服务响应201 CREATED并在Location头字段中提供可以访问新资源的URI.

是否应该允许客户端存储此URI以便将来能够直接访问资源,如果存在多长时间?如果客户端缓存了URI,这似乎就是在设置一种情况,即每次服务器更改其URI布局时,都需要确保在访问旧URI时提供永久重定向.否则客户端会中断.几年来,这种重定向系统可能会失控.

与使用URI模板的REST-RPC混合方法相比,这种情况似乎不会使服务器对其URI空间有更多的控制.

有很多关于缓存表示的信息,但是在超文本驱动的RESTful系统中缓存URI呢?

Lic*_*say 6

请记住Tim Berners-Lee说,"酷网址不会改变".一旦服务器向客户端分发URI,现在服务器的工作就是通过(例如)发送一个Moved-Permanently响应来保持URI工作,以防URI发生变化并且有人请求旧的响应.

这实际上是鼓励许多人设计不透明的URI,例如基于数据库ID或时间戳,而不是在URI中使用资源的某些人类可读属性.任何人都理解的东西,他们都会想要改变.