2017-06-17 60 views
1

我正在使用Lumen和Dingo API构建API。我的注册功能会检查指定的电子邮件是否已经存在。Lumen with Dingo API Helpers返回错误的状态代码

如果电子邮件已存在于数据库中,则使用Dingo API助手返回错误响应。

Dingo\Api\Routing\Helpers 

isEmailTaken功能:

private function isEmailtaken($email) { 
    $userExists = User::where('email', $email)->count(); 
    if($userExists) { 
     $return['error'] = true; 
     $return['message'] = "It appears you already have an account with us."; 
     return $return; 
    } else { 
     $return['error'] = false; 
     return $return; 
    } 
} 

注册函数调用函数,并返回一个错误:

$validateEmail = $this->isEmailtaken($email); 
    if ($validateEmail['error'] == true) { 
     return $this->response->errorBadRequest($validateEmail['message']); 
    } 

它输出与JSON响应正确的错误代码正确的错误消息:

"{"message":"It appears you already have an account with us.","status_code":400}" 

然而,在头产生的响应状态正常和代码是200

回答

0

STATUS_CODE 400 bad request当请求数据不低于代码帮助有效

返回定制STATUS_CODE

响应将返回
use Illuminate\Http\Response; 


return response()->json(['message' => 'It appears you already have an account with us.'])->setStatusCode(400); 

另外短路办法从laravel验证验证独特EMAILID像下面

$rules = array(

      'email'=>'required|email|unique:user', 
      ); 

    $validator = Validator::make($request->all(), $rules); 

    if (!$validator->passes()) { 
     return response()->json([ 'message' => $validator->messages()])->setStatusCode(400); 

}