在 Laravel 5.5 上使用表单请求验证的 MethodNotAllowedHttpException

rom*_*man 0 validation laravel laravel-5

当我在 Laravel 5.5 上使用表单请求验证时,这很奇怪,我所有的发布请求都将是 405 不允许的方法,但是当我使用标准验证时变得正常,这里我的代码是:

php工匠路线:列出

+--------+----------+----------------------------------------+--------------------+-----------------------------------------------------------+------------+
| Domain | Method   | URI                                    | Name               | Action                                                    | Middleware |
+--------+----------+----------------------------------------+--------------------+-----------------------------------------------------------+------------+
|        | POST     | api/register                           |                    | App\Http\Controllers\AuthController@register              | api        |
+--------+----------+----------------------------------------+--------------------+-----------------------------------------------------------+------------+
Run Code Online (Sandbox Code Playgroud)

请求使用失眠在此处输入图片说明

我失眠时的 base_api 值为http://mylocal.app/api

错误信息:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
Run Code Online (Sandbox Code Playgroud)

错误显示消息: 在此处输入图片说明

路由器(api.php):

Route::post('register', 'AuthController@register');
Run Code Online (Sandbox Code Playgroud)

控制器(AuthController.php):

use App\Http\Requests\StoreRegistration;

public function register(StoreRegistration $request)
{

    $email = $request->email;
    $name = $request->name;
    $password = $request->password;

    $user = User::create([
        'name' => $name,
        'email' => $email,
        'password'  => Hash::make($password)
    ]);

    $verifyUser = VerifyUser::create([
        'user_uuid' => $user->uuid,
        'token' => str_random(100)
    ]);

    SendVerificationEmail::dispatch($user); //I use queue to send email

    return response()->json(['success' => true, 'message' => 'message on success']);
}
Run Code Online (Sandbox Code Playgroud)

商店注册.php :

class StoreRegistration extends FormRequest {
public function authorize()
{
    return true;
}

public function rules()
{
    return [
        'name' => 'required|min:4|max:50|unique:users|alpha_dash',
        'email' => 'email|required|max:255|unique:users',
        'password' => 'required|confirmed|min:6'
    ];
}
}
Run Code Online (Sandbox Code Playgroud)

这个问题让我抓狂。

Leo*_*ent 8

当您从 insomnia 发送请求时,请确保添加标头;

接受:application/jsonContent-Type: application/json

这样 Laravel 就知道它是一个 api 请求,并且将使用定义在api.php而不是web.php路由上的路由。