MethodNotAllowedHttpException в Laravel, Request :: isMethod ('') не работает - PullRequest
0 голосов
/ 07 сентября 2018

Отказ от ответственности: В других вопросах уже есть некоторые решения, которые совсем не работают для меня. Вот почему я пишу этот вопрос. Я проверил решения здесь ... Ссылка StackOverflow

Я получаю эту ошибку ... I'm getting this error...

Я знаю, почему это происходит: Он ожидает POST-запрос, но я предлагаю GET-запрос, который разрушает игру. Но мне нужно, чтобы показывал сообщение об ошибке при выполнении запроса GET на /api/register

Что я сделал, чтобы остановить это: AuthController@register

public function register(Request $request)
{

    $method = $request->method();

    if ($method != 'POST'){
        return response()->json(['status' => 'error', 'message' => 'Method not Allowed.'], 405);
    }

    try{
        $user_registered = User::create([
            'fname' => $request->fname,
            'lname' => $request->lname,
            'email' => $request->email,
            'password' => Hash::make($request->password),
            'verificationToken' => str_random(100),
            'status' => 'STARTER',
            'api_token' => str_random(100)
        ]);

        $user = User::find($user_registered->id);
    } catch(\Exception $e){
        return response()->json(['status' => 'error', 'message' => 'User cannot be registered due to illegal or incomplete entry.'], 401);
    }

    return response()->json(['status' => 'success', 'user' => $user], 200);    

}

Итак, вы видите, что я использую оператор if, чтобы проверить, какой метод используется. Но он все еще не работает.

Вот мой routes/api.php файл:

Route::middleware('auth:api')->get('/user', function (Request $request) {
   return $request->user();
});

Route::post('/register', 'AuthController@register');

Пожалуйста, помогите мне с этим. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Используйте метод маршрутизации Laravel any, который принимает все HTTP-запросы, вот ваш код выглядит как

Route::any('/register', 'AuthController@register');

Надеюсь, это поможет.

0 голосов
/ 07 сентября 2018

Вы пытались добавить новый маршрут вместо этого?

Route::get('/register', function () {
   return response()->json(['status' => 'error', 'message' => 'Method not Allowed.'], 405);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...