在laravel api中发生错误时获取Json响应

时间:2017-09-18 13:37:49

标签: laravel

我正在使用Laravel,我想要请求引发的错误的JSON响应。

例如,在注册时使用重复的电子邮件地址返回:

{
  "email": [
    "The email has already been taken."
  ]
}

但我希望答案是这样的:

{
  "success": false,
  "errors": [ 'errors' ]
}

提前致谢。

4 个答案:

答案 0 :(得分:0)

        $validator = Validator::make($input);

        if (!$validator->fails()) {
            $responseMessage['success'] = true;
        } else {
            $responseMessage['success'] = false;
            $responseMessage['error'] = $validator->errors();
        }
        return responseMessage;

答案 1 :(得分:0)

如果您使用验证器,请执行此操作 -

$validator = Validator::make($input, $rules);
if ($validator->fails()) {
    $error = array_flatten($validator->messages()->toArray());
    $response['response'] = [
                "success" => false,
                "error"   => $error
            ]; 

    return $response;
}

希望这对你有用。

答案 2 :(得分:0)

要返回json错误,请使用:

$message = 'Self defined error message';
return response()->json([['error' => $message]], 400);

400是您想要返回的http状态代码,可以是您想要的任何内容。在这种情况下,您可能希望返回400(错误请求)。

上述代码的输出:

[
 {
  "error":"Self defined error message"
 }
]

答案 3 :(得分:0)

$messages = [
        'email.unique'      => $request->email . " has been used",
    ];

    $validator = Validator::make($request->email, [
        'email'     => 'required|max:255|email|unique:users'
        ], $messages);


    if ($validator->fails()) {
        return response()->json($validator->messages(), 200);

希望这可以帮助你:)