我目前正在使用cakephp构建REST api。 基本上当我向例如add.json发送请求等时,它将获取输入数据并向我提供json数据,同样如果我将它发送到add.xml,它将给我一个xml响应。
但是,如果在发出此请求(例如外键约束)时出现问题,则响应是包含错误的HTML页面。是否有可能出现错误的json / xml视图?
同样在cakephp验证中,可以在验证过程中执行外键检查吗?
答案 0 :(得分:1)
好的,所以我设法解决了这个问题。
首先,我更改了我的app / Config / core.php文件以更改异常渲染器。
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'RESTExceptionRenderer',
'log' => true
));
然后我在app / Lib / Error中创建了RESTExceptionRenderer.php。 App :: uses('ExceptionRenderer','Error');
class RESTExceptionRenderer extends ExceptionRenderer {
protected function _outputMessage($template) {
/*Check if we are an json or xml request*/
if( $this->controller->request->params['ext'] === 'json' ){
$this->controller->layout = null;
echo parent::_outputMessage( "ajax/" . $template );
} else if( $this->controller->request->params['ext'] === 'xml' ) {
$this->controller->layout = null;
echo parent::_outputMessage( "xml/" . $template );
} else {
parent::_outputMessage($template);
}
}
}
这种方式如果有人访问index.json等并抛出异常,则会在json而不是html中返回错误。