vercel API conflict with laravel API



我正试图在Vercel上部署我的Laravel应用程序。

这是RouteServiceProvider.php代码:

...
public function boot()
    {
        $this->configureRateLimiting();
        $this->routes(function () {
            Route::prefix('apis')
                ->middleware('api')
                ->namespace($this->namespace)
                ->group(base_path('routes/api.php'));
            Route::prefix('api')
                ->middleware('api')
                ->namespace($this->namespace)
                ->group(base_path('routes/api.php'));
            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/web.php'));
        });
    }
...

我的api.php:中的代码

Route::get('/', function () {
    return 'this is an API';
});
Route::get('/person', function () {
    $person = [
        'first_name' => 'Sean',
        'last_name' => 'Pooley',
    ];
    return $person;
});

在本地环境中,localhost/apilocalhost/api/person运行良好,但当我在Vercel上部署它时,api myapp/api/person不起作用,但myapp/apis/personmyapp/apis/myapp/api显示了我想要的内容。

我怀疑路由总是引用Vercel而不是Laravel路由,因为根目录有一个目录api,所以每当调用api时,它都会指向该文件夹。那么,有没有办法克服这个问题呢?或者只能使用apis作为Laravel的前缀?

我遇到了同样的问题,发现通过从RouteServiceProvider.php中删除api前缀,您可以访问/resource/api/resource端点。

在Vercel上,/api目录是为无服务器功能保留的。如果您仍然想将该路由用于其他代码,那么有一些变通方法,比如在路由前面加一个下划线_。此处阅读文档

最新更新