尽管在routes/api.php 中设置正确,Laravel API 路由仍返回 404

问题描述 投票:0回答:1

我正在开发一个 Laravel API 项目,即使我已经在 paths/api.php 中设置了 EventController 和路由,我的 /api/events 路由仍然返回 404 错误。尽管服务器正确运行并查看了该路由的日志,但它仍然无法工作,并且当我运行 php artisan route:list 时该路由不会出现。

我尝试在routes/api.php文件中定义我的API路由,并在Http/Controllers/Api目录中设置EventController。这是我的设置的相关代码:

routes/api.php 中的 API 路由:

`<?php

use App\Http\Controllers\Api\AttendeeController;
use App\Http\Controllers\Api\EventController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

Route::apiResource('events', EventController::class);

Route::apiResource('events.attendees', AttendeeController::class)
    ->scoped(['attendee' => 'event']);

Route::get('/test', function () {
    return response()->json(['message' => 'Test route']);
});`

Http/Controllers/Api/EventController.php 中的EventController:

`<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class EventController extends Controller
{
    public function index()
    {
        return response()->json(['message' => 'Events listed successfully']);
    }

    public function store(Request $request) { /* ... */ }

    public function show(string $id) { /* ... */ }

    public function update(Request $request, string $id) { /* ... */ }

    public function destroy(string $id) { /* ... */ }
}`

RouteServiceProvider.php:

`<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Route;

class RouteServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::prefix('api')
                ->middleware('api')
                ->namespace('App\Http\Controllers\Api')
                ->group(base_path('routes/api.php'));

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

我希望 /api/events 路由显示来自 EventController 的数据,但收到了 404 错误。服务器日志显示路由正在被访问,但它仍然返回 404。我手动创建了 api.php 和 RouteServiceProvider.php,因为它们在我的项目中丢失了。

尽管做出了清除配置缓存和发布供应商文件等所有努力,但 php artisan route:list 命令不显示我的 API 路由,这是不寻常的。

laravel api routes laravel-11
1个回答
0
投票

由于您使用的是 Laravel 11,为了将 api 路由注册到应用程序中,您需要使用:

php artisan install:api

此外,Laravel 11 中不再使用

RouteServiceProvider
。路由配置现已移至
bostrapp/app.php

注意:如果上述命令不起作用,您可以在

bostrapp/app.php
中手动注册api路由:

->withRouting(
    api: __DIR__.'/../routes/api.php',
    apiPrefix: 'api/',
)

阅读更多官方文档

© www.soinside.com 2019 - 2024. All rights reserved.