休息内容协商和缓存

标签 rest caching content-type content-negotiation

我想知道缓存如何与基于内容协商的 API 一起使用。由于要以 XML 或 JSON 格式获取资源,因此 URI 将相同,例如:

http://example.com/bikes/mountain

该服务根据 Accept 类型 header 返回 JSON/XML。缓存有多智能?

例如:

  • 如果一个客户端使用 Accept 类型请求返回 XML。
  • 响应由 Web 服务器缓存 1 分钟。
  • 第二个客户端使用 Accept 类型请求相同的资源以返回 JSON

  • 缓存检查是否接受/内容类型?或者这会导致 JSON 请求者取回 XML 数据,因为那是服务器缓存的内容?我希望这是一个如此明显的事情,它已经被处理了,否则,在 URI 中包含 .xml/.json 不是一个很大的论据吗?

    我想我的问题基本上是,我可以在仍然使用标准缓存技术的同时安全地使用内容协商吗?

    最佳答案

    是的。查看 RFC 2616 中 Vary header 的描述

    在我对变量 header 的简单理解中,缓存将使用在变量 header 中命名的 header 字段来唯一标识缓存的表示。

    关于休息内容协商和缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3014864/

    相关文章:

    rest - REST 仅适用于 Web API 吗?如果不是,那么除了 Web API 之外,还有哪些系统可以遵循 REST?

    rest - HTTP 状态 424 或 500 表示外部依赖项错误

    python - 属性错误 : 'str' object has no attribute '__module__'

    angular - Firebase 托管 - 清除缓存

    html - 什么是过时的元 http-equiv=content-language 的 HTML5 替代品。

    Azure Devops API 用于获取包含文件夹的存储库中的所有文件

    javascript - null 或空 vs 无参数 - 使用可选参数调用 API

    android - 使用 ETag 的 Volley 缓存

    java - 更改 @Produces(...) 在 Jersey 生产的内容?

    arrays - 在groovy中以数组的形式显示字段值