如何在 Laravel 6 API 中创建自定义验证规则

How to create custom validation rule in Laravel 6 API

我需要使用我的自定义验证规则来验证 API 请求。

请求Class:

这是我的请求验证规则。

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class LoginRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {
        return [
            'username' => 'required',
            'password' => 'required'
        ];
    }
    public function messages()
    {
        return [
            'username.required' => 'The Username field is required',
            'password.required'  => 'The Password field is required'
        ];
    }
}

API 控制器:

这是我的 API 控制器和方法。

use Illuminate\Http\Request;
use App\Http\Controllers\API\BaseController as BaseController;
use Illuminate\Support\Facades\Auth;
use App\Http\Requests\LoginRequest;

class LoginController extends BaseController
{
    public function login(LoginRequest $request)
    {
        print_r($validatorMsg);
        die();
    }
}

无法获取错误消息。

为了在您的 API 中显示错误消息,请在您的 LoginRequest class 中使用 response() 方法,这样您总是 return JSON。像这样:

public function response(array $errors)
{
     // Always return JSON.
     return response()->json($errors, 422);
}

现在尝试提交空表单,您应该可以看到错误消息。

伙计们,我解决了这个问题,这是解决方案:

public function login(Request $request)
{
    $LoginRequest = New LoginRequest;
    $validator = Validator::make($request->all(), $LoginRequest->rules(),$LoginRequest->messages());

    if($validator->fails()){
        return response()->json($validator->errors(), 422);      
    }
}