我正在按照CakePHP书中的教程来解释设置RESTful Web服务的基础知识.
到目前为止,我已将路由文件更新为以下内容:
Router::mapResources('stores'); Router::parseExtensions('json');
我还在app/layouts/json和相应的json视图中设置了一个空白布局.当我导航到controller/action.json时,我成功地收到了json输出
我想知道,如果没有.json扩展名,它会尝试加载常规视图.我期待构建一个只有json输出的纯api,有没有办法阻止常规渲染输出?
如果您能够以另一种方式识别JSON请求,则可以将渲染强制为JSON.例如,如果Accepts HTTP标头包含application/json,则可以将其放在控制器中:
public function beforeFilter(){ if ($this->request->accepts('application/json')) { $this->RequestHandler->renderAs($this, 'json'); } parent::beforeFilter(); }
它是CakePHP 2.0表示法,但CakePHP 1.2和1.3可能存在类似的东西.
您也可以检测请求Content-Type,或者也可以检测,尤其是在未使用Accepts的情况下.