Откат маршрута для методов POST в Laravel?

Есть ли способ проверить резервный маршрут для почтовых методов? Этот код работает для любого URL-адреса получения в моем файле маршрутов, т. Е. Я получаю этот ответ («Страница не найдена»), если я набираю неправильный URL-адрес GET.

Есть ли способ проверить то же самое для URL-адресов POST?

Route::fallback(function(){
    return response()->json([
        'status'    => false,
        'message'   => 'Page Not Found.',
    ], 404);
});
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
5
0
5 125
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Поместите этот сценарий в конец файла маршрутов.

Route::any('{url?}/{sub_url?}', function(){
    return response()->json([
        'status'    => false,
        'message'   => 'Page Not Found.',
    ], 404);
})

Он автоматически обнаружит, если кто-то попытается использовать какие-либо другие маршруты, как показано ниже.

laravel_project_path/public/any_string
laravel_project_path/public/any_string/any_string

Это не работает. И данный код теперь также не работает с URL-адресом GET. И нужно ли мне что-то передавать в {url}?

azm_shah 02.04.2019 10:30

Это можно сделать только до 2 глубины. Используйте регулярное выражение с where().

Meow Kim 09.04.2020 07:07
Ответ принят как подходящий
use Request;
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

В app/Exceptions/Handler.php замените функцию рендеринга

public function render($request, Exception $exception)
    {
        if (Request::isMethod('post') && $exception instanceof MethodNotAllowedHttpException) {
            return response()->json([
                'message' => 'Page Not Found',
                'status' => false
                ], 500
            );
        }
        return parent::render($request, $exception);
    }

Или, если вы хотите как NotFound, так и MethodNotAllowed, тогда

public function render($request, Exception $exception)
    {
        if ((Request::isMethod('post') && $exception instanceof MethodNotAllowedHttpException) || (Request::isMethod('post') && $exception instanceof NotFoundHttpException)) {
            return response()->json([
                'message' => 'Page Not Found',
                'status' => false
                ], 500
            );
        }
        return parent::render($request, $exception);
    }

Привет, Акаш, я соответственно изменил код и получаю эту ошибку Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException

azm_shah 02.04.2019 11:45

изменить экземпляр на MethodNotAllowedHttpException. Пожалуйста, проверьте обновленный ответ

Akash Kumar Verma 02.04.2019 12:02

Оно работает. Спасибо. Просто нужно было добавить использование Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpE‌​исключение;

azm_shah 02.04.2019 12:15

Определите собственный резервный маршрут в конце вашего route/api.php

Route::any('{any}', function(){
    return response()->json([
        'status'    => false,
        'message'   => 'Page Not Found.',
    ], 404);
})->where('any', '.*');

Вы можете использовать данный метод для проверки URL-адресов POST.

Route::fallback(function(){
    return \Response::view('errors.404');
});

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