API 值为 post 数据的路由前缀
API route prefix with a value of post data
是否可以有一个动态 API 路由前缀,其值基于 post 请求数据中的 organization
字段?
例如post请求数据为:
id: 1, name: 'John Doe', organization: 'CISCO'
我想要的路线是:
Route::prefix('CISCO')->group(function() {
Route::post('create', [Controller::class, 'create'];
})
如果不可能,是否有任何其他方法可以传递 organization
值,以便我能够构建动态前缀路由?
在您的示例中,CISCO
是您的 URL 中的一个参数。
你可以这样做:
Route::prefix('{organization}')->group(function() {
Route::post('create', [Controller::class, 'create'];
});
通向这条路线:
POST http://youdomain.com/CISCO/create
然后在你的控制器中:
public function create($organization)
{
dd($organization); //CISCO
}
小心这样的前缀,因为它会导致路由问题。例如,如果您有另一条这样的路线:
Route::prefix('{organization}')->group(function() {
Route::post('create', [Controller::class, 'create'];
});
Route::prefix('{shop}')->group(function() {
Route::post('create', [ShopController::class, 'create'];
});
Laravel 将很难理解应该使用哪条路线。
这里最好的做法是添加另一个前缀,所以它看起来像这样:
Route::prefix('organization/{organization}')->group(function() {
Route::post('create', [Controller::class, 'create'];
});
Route::prefix('shop/{shop}')->group(function() {
Route::post('create', [ShopController::class, 'create'];
});
此外,请记住,当您有多个路由使用前缀时,使用前缀很有用。如果你只有一条路线,你应该只做这样的事情:
Route::post('organization/{organization}/create', [Controller::class, 'create'];
Route::post('shop/{shop}/create', [ShopController::class, 'create'];
是否可以有一个动态 API 路由前缀,其值基于 post 请求数据中的 organization
字段?
例如post请求数据为:
id: 1, name: 'John Doe', organization: 'CISCO'
我想要的路线是:
Route::prefix('CISCO')->group(function() {
Route::post('create', [Controller::class, 'create'];
})
如果不可能,是否有任何其他方法可以传递 organization
值,以便我能够构建动态前缀路由?
在您的示例中,CISCO
是您的 URL 中的一个参数。
你可以这样做:
Route::prefix('{organization}')->group(function() {
Route::post('create', [Controller::class, 'create'];
});
通向这条路线:
POST http://youdomain.com/CISCO/create
然后在你的控制器中:
public function create($organization)
{
dd($organization); //CISCO
}
小心这样的前缀,因为它会导致路由问题。例如,如果您有另一条这样的路线:
Route::prefix('{organization}')->group(function() {
Route::post('create', [Controller::class, 'create'];
});
Route::prefix('{shop}')->group(function() {
Route::post('create', [ShopController::class, 'create'];
});
Laravel 将很难理解应该使用哪条路线。
这里最好的做法是添加另一个前缀,所以它看起来像这样:
Route::prefix('organization/{organization}')->group(function() {
Route::post('create', [Controller::class, 'create'];
});
Route::prefix('shop/{shop}')->group(function() {
Route::post('create', [ShopController::class, 'create'];
});
此外,请记住,当您有多个路由使用前缀时,使用前缀很有用。如果你只有一条路线,你应该只做这样的事情:
Route::post('organization/{organization}/create', [Controller::class, 'create'];
Route::post('shop/{shop}/create', [ShopController::class, 'create'];