Я новичок в 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, но оба не работают.
пожалуйста, введите эту команду (php artisan route:clear) и снова запустите сервер (php artisan serve)
есть еще маршруты, я просто показываю индекс и уже запускаю маршрут: очистить
Отображается ли корневая страница? 127.0.0.1:8000/
да корень шоу






Просто добавьте public в URL-адрес перед API.
Нравиться
/127.0.0.1:8000/public/api/dashboard/departments
@jeesoon Покажите полный URL-адрес, который вы пытаетесь использовать.
я попробовал это предложение /127.0.0.1:8000/public/api/dashboard/departments и два других /127.0.0.1:8000/api/dashboard/departments и /127.0.0.1:8000/dashboard/departments
Добавьте ключевое слово public перед API, как этот URL-адрес ----> /127.0.0.1:8000/public/api/dashboard/departments
И зачем ему это делать? Нигде в коде не указан «общедоступный» префикс.
Это ларавель по умолчанию.
но вы можете удалить общедоступное ключевое слово в URL-адресе, некоторые незначительные изменения в структуре laravel
По умолчанию его нет в Laravel, если только ваш веб-сервер не настроен неправильно.
Маршруты вашего API находятся в промежуточном программном обеспечении api, для которого требуется аутентификация типа API. Если вы ознакомились с документацией API-аутентификация, вам необходимо настроить токены API и передать их вместе с вашим запросом.
Вам нужно либо передать токен вместе с вашим запросом, удалить промежуточное ПО api и отменить аутентификацию ваших маршрутов API, либо переместить маршруты, к которым вам нужно получить доступ через браузер, из промежуточного ПО api в файл промежуточного ПО и маршрутов web.
Ты прав. Для простого тестирования, чтобы проверить, работает ли мой API, то есть без реализации каких-либо аутентификаций, я следую вашему предложению: я просто удаляю промежуточное программное обеспечение API для определенных маршрутов API, чтобы они не аутентифицировались. Следовательно, я могу получить доступ к API через URL-адрес: локальный/mylaravelprojects/myjwtapp/public/api/пользователь. Это работает. Конечно, в реальном проекте мне нужно реализовать аутентификацию либо с помощью Passport, либо с помощью простого JWT.
Хорошее объяснение
Для тех, кто еще интересуется, или это только я. Это то, что я сделал после многих испытаний.
я удаляю 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. Должно работать как у меня. Но если это не так, вы можете вернуться к указанному выше решению.
Какой в этом смысл? Если вам не нужен префикс API, просто добавьте маршруты в web.php.
Помните, что маршруты, объявленные в api.php, автоматически добавляют префикс /api, например:
Route::get('/hello', ...)
axios.get('/api/hello')
URL-адреса с префиксом также были протестированы, поэтому я не думаю, что это решение этой проблемы.
Это прямо в вопросе. "я пытался получить к нему доступ через /127.0.0.1:8000/api/dashboard/departments"
Чтобы запустить проект 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 или нет.
Только один маршрут для
Route::resource?