Маршруты 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, но оба не работают.


person jeesoon    schedule 08.03.2019    source источник
comment
Только один маршрут для Route::resource?   -  person keyboardSmasher    schedule 08.03.2019
comment
пожалуйста, введите эту команду (php artisan route: clear), а затем снова запустите сервер (php artisan serve)   -  person Igor Carvalho    schedule 08.03.2019
comment
есть еще маршруты, я просто показываю индекс, и я уже запустил маршрут: clear   -  person jeesoon    schedule 08.03.2019
comment
Корневая страница отображается? 127.0.0.1:8000/   -  person keyboardSmasher    schedule 08.03.2019
comment
да, главное шоу   -  person jeesoon    schedule 08.03.2019


Ответы (4)


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

Route::get('/hello', ...)
axios.get('/api/hello')
person Eliseo    schedule 01.11.2019
comment
URL-адреса с префиксом также были протестированы, поэтому я не думаю, что это решение этой проблемы. - person Henridv; 01.11.2019

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

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

person Alec Gordon    schedule 08.03.2019
comment
Ты прав. Для простого тестирования, чтобы проверить, работает ли мой API, то есть без какой-либо аутентификации, я следую вашему предложению: я просто удаляю промежуточное ПО api для определенных маршрутов API, чтобы они не прошли аутентификацию. Следовательно, я могу получить доступ к API через URL-адрес, например: localhost / mylaravelprojects / myjwtapp / public / api / user. Это работает. Конечно, в реальном проекте мне нужно реализовать аутентификацию либо с помощью паспорта, либо с помощью простого JWT. - person Lex Soft; 15.04.2020
comment
Хорошее объяснение - person Richard; 09.01.2021

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

я удаляю 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');

person jeesoon    schedule 08.03.2019
comment
Как насчет того, чтобы попробовать следующее? Не меняйте содержимое RouteServiceProvider, чтобы ваш маршрут по-прежнему имел префикс API, на случай, если для других маршрутов API потребуется аутентификация. Измените только свой файл api.php, чтобы он стал таким, как вы упомянули, поэтому ваши определенные маршруты, такие как / dashboard / sizes, не аутентифицируются. Затем вы получаете доступ к API с этим URL: 127.0.0.1:8000/public/api/dashboard/departments. Он должен работать как у меня. Но если этого не произойдет, вы можете вернуться к описанному выше решению. - person Lex Soft; 15.04.2020

Просто добавьте общедоступный URL-адрес перед api.

Нравиться

/127.0.0.1:8000/public/api/dashboard/departments
person Paras Raiyani    schedule 08.03.2019
comment
@jeesoon Покажите свой полный URL-адрес, который вы пытаетесь. - person Muhammad Shareyar; 08.03.2019
comment
Я попробовал это предложение /127.0.0.1:8000/public/api/dashboard/departments и два других /127.0.0.1:8000/api/dashboard/departments и /127.0.0.1:8000/dashboard/departments - person jeesoon; 08.03.2019
comment
Добавьте общедоступное ключевое слово перед api, например, этот URL-адрес ---- ›/127.0.0.1:8000/public/api/dashboard/departments - person Paras Raiyani; 08.03.2019
comment
И зачем ему это делать? Нигде в коде не указан публичный префикс. - person Nicolas; 10.03.2021
comment
По умолчанию это laravel. - person Paras Raiyani; 11.03.2021
comment
но вы можете удалить публичное ключевое слово в URL-адресе, некоторые незначительные изменения в структуре laravel - person Paras Raiyani; 11.03.2021