如何确保接受标头应用程序/*+;json还将触发CakePHP 2.x中的JsonView?

如何确保接受标头应用程序/*+;json还将触发CakePHP 2.x中的JsonView?,json,cakephp,http-headers,cakephp-2.0,cakephp-2.3,Json,Cakephp,Http Headers,Cakephp 2.0,Cakephp 2.3,我正在用CakePHP构建一个API服务器 我是按照以下要求建造的: 不在url中使用.json来触发JsonView 不在url中使用v1进行版本控制 使用accept headersapplication/Person.1.0+json进行版本控制并触发JsonView 我知道CakePHP已经在accept头中查找application/json 如何扩展框架,使其也能触发JsonView 请注意,accept标头的格式为application/ModelName.version+js

我正在用CakePHP构建一个API服务器

我是按照以下要求建造的:

  • 不在url中使用
    .json
    来触发
    JsonView
  • 不在url中使用
    v1
    进行版本控制
  • 使用accept headers
    application/Person.1.0+json
    进行版本控制并触发
    JsonView
我知道CakePHP已经在accept头中查找
application/json

如何扩展框架,使其也能触发JsonView


请注意,accept标头的格式为
application/ModelName.version+json

您可以使用
CakeResponse::type()
将自定义accept标头映射到类型“json”。尽管这取决于你的应用程序大小,但如果你计划在每个模型上使用一个accept头,比如
application/ModelName.version+json

,那就意味着要添加很多头,因为你已经得到了解决方案,可以很容易地输出json数据?对我来说,一个好的API是清晰而直接的,在本例中,这意味着它需要json输入和输出的扩展json。看看其他主要api是如何做到的。@mark GitHub的api也有一个奇怪的accept头。请参见他们使用的
Accept:application/vnd.github.beta+json
添加多个Accept头怎么样?应用程序/json;application/MOdelName.version+json。CakePHP会自动检测并呈现JsonView吗?当然,找出哪个模型名和版本的任务取决于我的代码通过控制器中的$this->request来确定。或者你建议我对每个版本的api使用一个自定义头吗?意思是:
Accept:application/appname.version+json
我个人觉得每个模型一个标题有点过分,建议每个api版本只使用一个标题。我可以同意。那么你的答案是否适用?