如何从 Laravel 8 中的自定义 Web 路由中删除“api/”前缀?

Posted

技术标签:

【中文标题】如何从 Laravel 8 中的自定义 Web 路由中删除“api/”前缀?【英文标题】:How to remove "api/" prefix from custom web route in Laravel 8? 【发布时间】:2021-07-26 06:08:33 【问题描述】:

我用这个代码修改了我的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 中间件。

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

谢谢!

=== 更新 ===

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

我从代码中删除了-&gt;namespace($this-&gt;namespace) 部分,但结果相同 检查你的 api.php 文件这听起来像是你没有保存文件或者你编辑了错误的文件。 我保存了文件:) 那么什么是api.php内容? 定义了很多路由,但这些都没有。此代码仅存在于 web.php

以上是关于如何从 Laravel 8 中的自定义 Web 路由中删除“api/”前缀?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 @solana/web3.js 从 Solana 中的自定义令牌中删除铸币权限?

如何将控制器中的 Laravel 4.2 beforeFilter 转换为 Laravel 5.2 中的自定义中间件

如何使用验证“唯一”访问 Laravel 中的自定义文本框名称?

Laravel 5 中的自定义验证器

Laravel Spark 中的自定义验证消息

如何从 Laravel 8 中的存储应用程序文件夹下载文件