Laravel – Как освободить только маршруты API

Я разработал веб-приложение с интерфейсом React и Laravel для API без сохранения состояния.

Я хотел бы получить доступ к интерфейсу с URL-адресом «http://localhost/my-application» и к API-интерфейсу серверной части с URL-адресом «http://localhost/api/my-application/».

Я создал папку «www/api/my-application» и поместил сюда символическую ссылку на общедоступный index.php моего бэкэнда Laravel.

Проблема в том, что для вызова API мне нужно указать URL-адрес «http://localhost/api/my-application/api/login».

Как вы можете видеть, мне пришлось повторить «/api», потому что API Laravel имеют этот URL-адрес по умолчанию. Кроме того, если я попытаюсь получить доступ только к «http://localhost/api/my-application/», я получу страницу с ошибкой сервера 500, и в журнале будет написано:

ОШИБКА: Представление [приветствие] не найдено. {"исключение":"[объект] (InvalidArgumentException(код: 0): представление [приветствие] не найдено.

Это потому, что он пытается получить доступ к представлению. Но у меня нет никаких представлений, я бы хотел, чтобы в моем проекте Laravel были только API.

Как очистить проект, чтобы мне просто нужно было получить доступ к «http://localhost/api/my-application/» для доступа к API? Таким образом, API «входа» должен быть здесь: «http://localhost/api/my-application/login», а не здесь «http://localhost/api/my-application/api/login».

Если вы используете более старый шаблон laravel (v10 и ранее), у вас должен быть этот файл, и вы можете удалить из него строку prefix('api') (вы не собираетесь использовать веб-маршруты, поэтому это не должно быть проблемой) .

apokryfos 12.03.2024 21:58
Стоит ли изучать 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 и хотите разрабатывать...
1
1
470
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете сделать это так, как указано в комментарии:

$router->group(['prefix' => '/api/v1'], static function (Router $router): void {
    ...
    $router->get('login', [AccessController::class, 'show']);
    ...
});
Ответ принят как подходящий

Изменить префикс маршрутов можно в RouteServiceProvider.php

Из этого

$this->routes(function () {
     Route::middleware('api')
        ->prefix('api')
        ->group(base_path('routes/api.php'));

     Route::middleware('web')
        ->group(base_path('routes/web.php'));
});

К этому

$this->routes(function () {
     Route::middleware('api')        
        ->group(base_path('routes/api.php'));

     Route::middleware('web')
        ->prefix('web')
        ->group(base_path('routes/web.php'));
});

Таким образом вы удаляете префикс для маршрутов API и добавляете префикс web/ к веб-маршрутам.

Затем из вашего интерфейса просто нажмите конечную точку http://localhost/api/my-application/login

Кроме того, вы можете попробовать удалить промежуточное программное обеспечение web Route от поставщика, чтобы отключить его.

Большое спасибо за решение. Я удалил ->prefix('api') и удалил веб-вызов промежуточного программного обеспечения.

koxige9113 13.03.2024 12:40

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