Маршруты API Laravel не найдены

Я новичок в API и Vue. Я работаю над Laravel 5.8 api.php, контроллерами и представлениями, и он возвращает только 404 Not Found.

это я пробовал

API.php

 Route::group(['middleware' => 'api'], function(){
    Route::resource('/dashboard/departments', 'DepartmentsController');
 });

Контроллер

class DepartmentsController extends Controller
{     
   public function index()
  {
  return 'hey';
  }
}

Список маршрутов

 GET|HEAD  | api/dashboard/departments                   | departments.index   | App\Http\Controllers\DepartmentsController@index                       | api,auth  

Я пытался получить к нему доступ с помощью /127.0.0.1:8000/api/dashboard/departments и /127.0.0.1:8000/dashboard/departments, но оба не работают.

Только один маршрут для Route::resource ?

keyboardSmasher 08.03.2019 04:11

пожалуйста, введите эту команду (php artisan route:clear) и снова запустите сервер (php artisan serve)

Igor Carvalho 08.03.2019 04:13

есть еще маршруты, я просто показываю индекс и уже запускаю маршрут: очистить

jeesoon 08.03.2019 04:15

Отображается ли корневая страница? 127.0.0.1:8000/

keyboardSmasher 08.03.2019 04:21

да корень шоу

jeesoon 08.03.2019 04:24
Стоит ли изучать 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 и хотите разрабатывать...
10
5
21 723
7

Ответы 7

Просто добавьте public в URL-адрес перед API.

Нравиться

/127.0.0.1:8000/public/api/dashboard/departments

@jeesoon Покажите полный URL-адрес, который вы пытаетесь использовать.

Muhammad Shareyar 08.03.2019 06:11

я попробовал это предложение /127.0.0.1:8000/public/api/dashboard/departments и два других /127.0.0.1:8000/api/dashboard/departments и /127.0.0.1:8000/dashboard/departments

jeesoon 08.03.2019 06:48

Добавьте ключевое слово public перед API, как этот URL-адрес ----> /127.0.0.1:8000/public/api/dashboard/departments

Paras Raiyani 08.03.2019 09:41

И зачем ему это делать? Нигде в коде не указан «общедоступный» префикс.

Nicolas 10.03.2021 17:09

Это ларавель по умолчанию.

Paras Raiyani 11.03.2021 12:36

но вы можете удалить общедоступное ключевое слово в URL-адресе, некоторые незначительные изменения в структуре laravel

Paras Raiyani 11.03.2021 12:36

По умолчанию его нет в Laravel, если только ваш веб-сервер не настроен неправильно.

miken32 13.12.2021 17:45

Маршруты вашего API находятся в промежуточном программном обеспечении api, для которого требуется аутентификация типа API. Если вы ознакомились с документацией API-аутентификация, вам необходимо настроить токены API и передать их вместе с вашим запросом.

Вам нужно либо передать токен вместе с вашим запросом, удалить промежуточное ПО api и отменить аутентификацию ваших маршрутов API, либо переместить маршруты, к которым вам нужно получить доступ через браузер, из промежуточного ПО api в файл промежуточного ПО и маршрутов web.

Ты прав. Для простого тестирования, чтобы проверить, работает ли мой API, то есть без реализации каких-либо аутентификаций, я следую вашему предложению: я просто удаляю промежуточное программное обеспечение API для определенных маршрутов API, чтобы они не аутентифицировались. Следовательно, я могу получить доступ к API через URL-адрес: локальный/mylaravelprojects/myjwtapp/public/api/пользователь. Это работает. Конечно, в реальном проекте мне нужно реализовать аутентификацию либо с помощью Passport, либо с помощью простого JWT.

Lex Soft 15.04.2020 19:48

Хорошее объяснение

Richard 09.01.2021 21:18

Для тех, кто еще интересуется, или это только я. Это то, что я сделал после многих испытаний.

я удаляю route::group из моего API.php и префикс ('api') из RouteServiceProvider.php и заменяю его промежуточным программным обеспечением ('web')

это мой файл RouteServiceProvider.php

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

а это мой файл API.php

Route::resource('/dashboard/departments', 'DepartmentsController');

Как насчет того, чтобы вместо этого попробовать следующее? Не изменяйте содержимое RouteServiceProvider, поэтому ваш маршрут по-прежнему будет иметь префикс API на тот случай, если другим вашим маршрутам API потребуется аутентификация. Измените только свой файл api.php, чтобы он стал таким, как вы упомянули, поэтому ваши определенные маршруты, такие как /dashboard/departments, не аутентифицируются. Затем вы получаете доступ к API по этому URL-адресу: 127.0.0.1:8000/public/api/dashboard/departments. Должно работать как у меня. Но если это не так, вы можете вернуться к указанному выше решению.

Lex Soft 15.04.2020 20:22

Какой в ​​этом смысл? Если вам не нужен префикс API, просто добавьте маршруты в web.php.

miken32 13.12.2021 17:44

Помните, что маршруты, объявленные в api.php, автоматически добавляют префикс /api, например:

Route::get('/hello', ...)
axios.get('/api/hello')

URL-адреса с префиксом также были протестированы, поэтому я не думаю, что это решение этой проблемы.

Henridv 01.11.2019 17:33

Это прямо в вопросе. "я пытался получить к нему доступ через /127.0.0.1:8000/api/dashboard/departments"

miken32 13.12.2021 17:49

Чтобы запустить проект laravel «замените хост своим»:

php artisan serve --host 10.11.222.33 --port 8000

или можно и так

php artisan serve --host 127.0.0.1 --port 8000

а затем вызовите API

http://10.11.222.33:8000/api/departments

просто беги

php artisan route:clear

Если вы используете клиент REST (Imsomnia, Postman), вам необходимо проверить, принимаете ли вы ответ JSON. Поместите в запрос заголовок с именем «Принять» и «application/json» в качестве значения.

Заголовок «Принять» со значением «application/json»

Если запрошенный маршрут имеет проверки (и вы не отправляете заголовок), вашим ответом будет корневая страница (или ошибка 404, если у вас нет маршрута в route/web.php).

Изменение заголовка accept не повлияет на то, получите ли вы 404 или нет.

miken32 04.02.2022 02:44

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