我对特定于内容类型供应商的内容感到非常困惑。说默认,
Content-Type: application/json
但是对于供应商特定类型,我可以拥有这个
Content-Type: application/vnd.anything.process-v1+json
如果我要检查 Content-Type 是否不是特定于供应商的,我是否需要在 PHP 中执行任何特殊函数才能使用?
如果您通过 HTTP POST 从客户端接受内容,您可以使用 $_SERVER['CONTENT_TYPE'] 检查内容类型。我鼓励您在 Content-Type 标头中使用 @ver 属性,而不是嵌入供应商内容类型名称。示例:
Content-Type: application/vnd.anything.process+json;ver=1
如果您通过 HTTP POST 向服务器发送内容,则需要指定接受标头来告诉客户端以供应商特定内容类型返回数据。像这样的东西会起作用:
header('Accept: application/vnd.anything.process+json;ver=1');
接受标头可能非常复杂。如果您不控制作为客户端发布的服务器,则应该为 Accept 标头提供合理的默认值。如果您希望服务器在不理解供应商标头的情况下发回纯 JSON,这样的方法会更友好:
header('Accept: application/vnd.anything.process+json;ver=1;q=0.9, application/json;q=0.1');
最宽松的 Accept 标头接受任何内容:
header('Accept: application/vnd.anything.process+json;ver=1;q=0.9, application/json;q=0.5, */*;q=0.1');
这是 Accept 标头的实际 RFC:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html