422(无法处理的内容)应在laravel api的axios响应中出现

avwztpqn  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(267)

当尝试使用Vue中的Axios向Laravel API提交POST请求时,验证运行正常,但在检查验证是否失败($data->fails())时,它将返回JSON响应作为错误,状态为422。它不会进入写入自定义返回消息的下一行。

<?php

namespace App\Http\Controllers\API;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;

class AuthController extends Controller

{
    //for making register
    public function register(Request $request){

        // Validator
        $data = $request->validate([
            'name' => 'required | string',
            'email' => 'required | email | unique:users',
            'password' => 'required | min:6 | max:10',
            'cPassword' => 'required | same:password'
        ]);

        // checking validation
        if($data->fails()){
            return response()->json(['error'=>$data->errors()->all()], 400);
        }

    }
}

c86crjj0

c86crjj01#

出现错误是因为您试图调用数组上的方法。
$request->validate()的响应类型是array,而不是Validator对象的示例。因此$dataarray,因此没有fails()或任何其他方法。Laravel在验证失败时使用$request->validate()的默认行为是自动抛出一个重定向回客户端的异常或者,如果验证成功,它将填充并返回一个包含通过验证的数据的数组。
移除下列程式码区块:

if($data->fails()){
    return response()->json(['error'=>$data->errors()->all()], 400);
}

相关问题