值为 post data 的 API 路由前缀
Posted
技术标签:
【中文标题】值为 post data 的 API 路由前缀【英文标题】:API route prefix with a value of post data 【发布时间】:2021-11-04 12:01:39 【问题描述】:是否可以有一个动态 API 路由前缀,其值基于发布请求数据中的 organization
字段?
比如post请求数据是:
id: 1, name: 'John Doe', organization: 'CISCO'
我想要的路线是:
Route::prefix('CISCO')->group(function()
Route::post('create', [Controller::class, 'create'];
)
如果不可能,是否有任何其他方法可以传递 organization
值,以便我能够构建动态前缀路由?
【问题讨论】:
【参考方案1】:在您的示例中,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'];
【讨论】:
感谢@toyi,由于我的声誉低,目前我无法投票。将在 4 分钟内接受此答案。 谢谢!很高兴它解决了你的问题。我已经用一些可能对您有用的附加信息更新了我的答案。祝你有美好的一天:)以上是关于值为 post data 的 API 路由前缀的主要内容,如果未能解决你的问题,请参考以下文章
.Net Core Web API,根据值创建路由逻辑到具有相同路由前缀的不同控制器
一切正常,但我更改了路由文件以添加前缀。它开始显示控制器不存在的反射异常
关于eShopOnContainers api网关路由前缀的问题