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

时间:2016-11-01 10:37:34

标签: http asp.net-web-api content-negotiation

我了解如何通过设置Accept和Content-Types来实现服务器驱动的协商。但我很困惑代理商驱动的谈判是如何发生的。

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

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

1 个答案:

答案 0 :(得分:0)

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

enter image description here

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