gpt4 book ai didi

laravel api 未显示来自请求验证的消息

转载 作者:行者123 更新时间:2023-12-02 06:13:16 24 4
gpt4 key购买 nike

我的后端 Laravel api 中的错误处理程序有问题,不要显示来自验证的错误消息。

路线/API

<?php
Route::group([

'middleware' => 'api',

], function ($router) {
Route::post('access/sign-up', 'AuthenticationController@signUp');
});

认证 Controller
<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\SignUpRequest;
use Illuminate\Http\Request;
use App\User;


class AuthenticationController extends Controller
{
/**
* Create a new AuthenticationController instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth:api', ['except' => ['signUp']]);
}


/**
*
*
* @return \Illuminate\Http\JsonResponse
*/
public function signUp(SignUpRequest $request)
{
//User::create($request->all());
return response()->json([
'data' => 'Usuario creado correctamente.'
]);
}
}

注册请求
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class SignUpRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|email|unique:users',
'firstName' => 'required',
'password' => 'required',
];
}


}

问题是,当 postman 发送密码为空白或不发送邮件时,例如它会将我发送到主页,而不是像以前一样向我发送包含所有错误的 json。我不知道该怎么办。
我尝试在 SignUpRequest 中使用自定义消息,但这不是问题,想想错误处理程序中的某种重定向。

最佳答案

使用表单请求;如果验证失败,将生成重定向响应以将用户发送回他们之前的位置。这就是您重定向回页面而不是响应 JSON 的原因。

Laravel 有一个 protected 方法“failedValidation”。在您的表单请求类中覆盖此方法。

  protected function failedValidation(\Illuminate\Contracts\Validation\Validator $validator)
{

throw new \Illuminate\Validation\ValidationException(response()->json($validator->errors(), 422));
}

关于laravel api 未显示来自请求验证的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54504816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com