如何使用CakePHP处理json api调用的应用程序错误?

时间:2014-01-21 04:00:49

标签: ajax json cakephp error-handling cakephp-2.3

我正在使用CakePHP 2.4。

我希望我的前端使用ajax对我的CakePHP后端进行api调用。

假设这是为了更改密码。

更改密码操作可能会引发以下应用程序错误:

  1. 旧密码错误
  2. 新密码并确认新密码不匹配
  3. 在我的前端,我有一个成功的回调处理程序和一个错误回调处理程序。

    错误回调处理程序处理所有非200请求调用,例如在我的操作中抛出NotFoundException或UnAuthorizedAccessException。

    成功回调处理程序处理所有200个请求调用,当然包括上述2个场景。

    我的问题是:

    1. 我应该继续这样做吗?意思是说,在所有成功的回调处理程序中,我需要注意应用程序的成功和应用程序错误情况。
    2. 我应该使用实际的HTTP错误代码发回应用程序错误吗?
    3. 如果我应该做2,我该如何在CakePHP中实现它?

      谢谢。

1 个答案:

答案 0 :(得分:0)

请勿将http错误代码用于以下系统错误:

  1. 旧密码错误
  2. 新密码并确认新密码不匹配
  3. 等等...
  4. 现在使用成功处理程序,您可以将消息和代码流显示为:

    创建Ajax帖子或者提交表单,我向您展示示例

    var passwordValue = $('#password').val();
    $.post( "/updatePassword", { passwordText: passwordValue })
                    .done(function(response) {
                     if(response.status === 'Success'){
                        // Success msg
                        // whatever                   
                     }else{
                        // Error msg
                        // whatever     
                     }
    
                    });
    

    json的反应意见:

     {
    "status": "Failed/Success",
    "message": "old password wrong."
     }
    

    在控制器中创建一个功能

    public function updatePassword() {
    
    $myModel = $this->MyModel->find('first' // YOUR CODE LOGIC);
    
    if($this->request->is('ajax') {
        $this->layout=null;
        // What else?
        echo json_encode($myModel);
        exit;
        // What else?
    
      }
    }
    

    做这样的事情,希望它能解决你的疑问!