Web 中的内容协商 API 通过代理驱动的协商 (HTTP)

Content Negotiation in Web API via Agent Driven Negotiation (HTTP)

我了解服务器驱动的协商是如何通过设置接受和内容类型进行的。但是我很困惑代理驱动的协商是如何进行的。

要参考的文档 - https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation

文档说,代理驱动协商涉及服务器根据 URL 返回 Web 资源的所有可能选项。但是由于响应的文件格式不存在,用户代理如何能够确定选择哪种文件格式。另外为什么在这种情况下我们需要第二次 API 调用来获取资源?

服务器支持的格式在第一个响应的正文中发送(图中2)。服务器可以自由选择他选择的表示来编码不同的选项,例如JSON 描述每个可能选择的对象数组。

之所以在Web/REST API 中不经常使用此方案,是因为300 Multiple Choices 响应没有标准。另外,第二次往返对性能有负面影响。