首页 > 解决方案 > 如何从 Laravel 8 中的自定义 Web 路由中删除“api/”前缀?

问题描述

RouteServiceProvider.php用这段代码修改了我的:

    public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            // ...

            if (env('THEME_NAME') !== null) {
                try {
                    Route::prefix('api')
                        ->middleware('api')
                        ->namespace($this->namespace)
                        ->group(base_path('routes/client-specific/' . env('THEME_NAME') . '/api.php'));
                } catch (\Throwable $th) {
                    // ...
                }

                try {
                    Route::middleware('web')
                        ->namespace($this->namespace)
                        ->group(base_path('routes/client-specific/' . env('THEME_NAME') . '/web.php'));
                } catch (\Throwable $th) {
                    // ...
                }
            }
        });
    }

然后在routes/client-specific/' . env('THEME_NAME') . '/web.php文件中我写了这段代码:

<?php

use Illuminate\Support\Facades\Route;

Route::get('{local}/cs/list', [ClientSpecific\CustomController::class, 'listPublic']);

然后我做了一个php artisan route:list,我在列表中得到了这条路线:

api/{local}/cs/list

在 RouteServiceProvider 中,我web为此路由文件使用中间件。

为什么要在我的路由中添加 Laraverapi/前缀?我怎样才能删除它?

谢谢!

=== 更新 ===

我加了更详细的代码,开始上Route::prefix('api')线了。

标签: laravellaravel-8laravel-routing

解决方案


所以看起来 $this->namespace 是“api”。顺便说一句,您不想在配置文件之外使用 env() 。


推荐阅读