MethodNotAllowedHttpException в Laravel, Request :: isMethod ('') не работает

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

Я получаю эту ошибку ...MethodNotAllowedHttpException в Laravel, Request :: isMethod ('') не работает

Я знаю, почему это происходит: Ожидается запрос 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');

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
353
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

Route::get('/register', function () {
   return response()->json(['status' => 'error', 'message' => 'Method not Allowed.'], 405);
});

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

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

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

Ты Бог. :-)

Kumar Abhirup 07.09.2018 17:10

Другие вопросы по теме