我正试图在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/api
和localhost/api/person
运行良好,但当我在Vercel上部署它时,api myapp/api/person
不起作用,但myapp/apis/person
、myapp/apis/
和myapp/api
显示了我想要的内容。
我怀疑路由总是引用Vercel而不是Laravel路由,因为根目录有一个目录api
,所以每当调用api
时,它都会指向该文件夹。那么,有没有办法克服这个问题呢?或者只能使用apis
作为Laravel的前缀?
我遇到了同样的问题,发现通过从RouteServiceProvider.php
中删除api
前缀,您可以访问/resource
和/api/resource
端点。
在Vercel上,/api
目录是为无服务器功能保留的。如果您仍然想将该路由用于其他代码,那么有一些变通方法,比如在路由前面加一个下划线_
。此处阅读文档