我在api.php
laravel 5.4
路由文件中有此代码
Route::get('/lectures/{id}', function ()
{
dd("lecture route");
});
Route::get('/lectures/send-request', function ()
{
dd("send-request route");
});
问题在于,当我访问localhost:8000/api/lectures/send-request
时,输出是'讲座路线' ,这是针对此网址的localhost:8000/api/lectures/{id}
但是当我更改路线的顺序时,它将正常工作
Route::get('/lectures/send-request', function ()
{
dd("send-request route");
});
Route::get('/lectures/{id}', function ()
{
dd("lecture route");
});
现在,当我访问localhost:8000/api/lectures/send-request
时,输出为'发送请求路由'
所以有什么问题?为什么会这样?
答案 0 :(得分:3)
路线完全符合预期。路线的优先顺序与它们的定义方式相同。
GET /lectures/{id}
GET /lectures/send-request
您已定义了两条路线,其中第二条路线基本上是第一条路线的选项之一。当您访问/lectures/send-request
时,它会满足路由/lectures/{id}
的条件,id
设置为send-request
。
您可以根据自己的喜好切换路线的顺序,也可以更改其中一条路线。
答案 1 :(得分:2)
这是因为Laravel自上而下匹配路线。这意味着匹配的第一条路线是正在使用的路线。 /lectures/send-request
匹配'/lectures/{id}'
并将$id
设置为'send-request'
。