我已经 援助} api
现在我要 a / b
但是它没有击中a / b,而是击中了a / {id},并将b设为{id}
如果我不允许更改a / {id},如何创建a / b?
Laravel框架。
$apiRoutes = [
// Dev routes
'get_a_by_id' => ['get', 'a/{id}','AController@getA'],
// App routes
'fetch_all_b' => ['get','a/b', 'BController@getB'],
]
这是我的代码route.php 甚至重新排序也不起作用。
答案 0 :(得分:3)
你能做的是
在a/b
上方的第a/{id}
处并添加->where(['id' => '[0-9]+');
,这将确保仅在有数值的情况下触发路线a/{id}
。
您可以根据需要更改正则表达式。
Route::get('a/b', function () {
//code
});
Route::get('a/{id}', function ($id) {
//code
})->where(['id' => '[0-9]+');
答案 1 :(得分:2)
这取决于您定义它们的顺序,首先需要创建特定的路由a/b
,然后在通配符下面。
Route::get('a/b', function () {
dd('testing b');
});
Route::get('a/{id}', function ($id) {
dd('testing', $id);
});
答案 2 :(得分:0)
简短的答案是在a/b
之前定义a/{id}
这是我的例子:
Route::get('/v1/smsportal/search/{type?}/{search?}', 'SMSPortals@search');
Route::get('/v1/smsportal/{id?}', 'SMSPortals@get');
Route::post('/v1/smsportal', 'SMSPortals@save');
Route::post('/v1/smsportal/{id?}', 'SMSPortals@update');
Route::delete('/v1/smsportal/{id?}', 'SMSPortals@delete');
如果我要求/v1/smsportal/search
,将在/v1/smspotal/{id}
之前调用 search
。