【问题标题】:How to remove "api/" prefix from custom web route in Laravel 8?如何从 Laravel 8 中的自定义 Web 路由中删除“api/”前缀?
【发布时间】: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') 行开始。

【问题讨论】:

    标签: laravel laravel-8 laravel-routing


    【解决方案1】:

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

    【讨论】:

    • 我从代码中删除了-&gt;namespace($this-&gt;namespace) 部分,但结果相同
    • 检查你的 api.php 文件这听起来像是你没有保存文件或者你编辑了错误的文件。
    • 我保存了文件:)
    • 那么什么是api.php内容?
    • 定义了很多路由,但这些都没有。此代码仅存在于 web.php
    猜你喜欢
    • 2020-04-16
    • 2017-06-12
    • 2016-12-26
    • 1970-01-01
    • 2019-09-07
    • 2018-09-10
    • 2020-09-27
    • 2022-11-01
    • 1970-01-01
    相关资源
    最近更新 更多