Laravel路线无法正常工作

时间:2017-05-16 16:40:36

标签: php laravel routes

我在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时,输出为'发送请求路由'

所以有什么问题?为什么会这样?

2 个答案:

答案 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'