php中路由器,HTTP路由 | 基础功能 | Lumen 5.3 中文文档

HTTP路由

由 学院君 创建于4年前, 最后更新于 1年前

版本号 #1

15233 views

8 likes

0 collects

1、基本路由

你可以将所有路由都定义在routes/web.php中。最基本的 Lumen 路由接收一个 URI 和一个闭包:

$app->get('foo', function () {

return 'Hello World';

});

$app->post('foo', function () {

//

});

有效的路由方法

路由器允许你注册响应任何HTTP动作的路由:

$app->get($uri, $callback);

$app->post($uri, $callback);

$app->put($uri, $callback);

$app->patch($uri, $callback);

$app->delete($uri, $callback);

$app->options($uri, $callback);

2、路由参数

必选参数

有时我们需要在路由中捕获URI片段,比如,如果想要从URL中捕获用户ID,可以通过如下方式定义路由参数:

$app->get('user/{id}', function ($id) {

return 'User '.$id;

});

可以按需要定义在路由中定义多个路由参数:

$app->get('posts/{post}/comments/{comment}', function ($postId, $commentId) {

//

});

路由参数总是通过花括号进行包裹,参数在路由被执行时会被传递到路由的闭包。

注:路由参数不能包含-字符,需要的话可以使用_替代。

3、命名路由

命名路由使生成URL或者重定向到指定路由变得很方便,在定义路由时指定路由名称,然后使用数组键as指定路由别名:

$app->get('profile', ['as' => 'profile', function () {

//

}]);

还可以为控制器动作指定路由名称:

$app->get('profile', [

'as' => 'profile', 'uses' => 'UserController@showProfile'

]);

生成指向命名路由的URL

一旦你为给定路由分配了名字,通过route函数生成URL时就可以使用路由名字:

$url = route('profile');

$redirect = redirect()->route('profile');

如果路由定义了参数,可以将路由参数作为第二个参数传递给route函数。给定的路由参数将会自动插入URL中:

$app->get('user/{id}/profile', ['as' => 'profile', function ($id) {

//

}]);

$url = route('profile', ['id' => 1]);

4、路由分组

路由分组允许我们在多个路由中共享路由属性,比如中间件和命名空间等,这样的话一大波共享属性的路由就不必再各自定义这些属性。共享属性以数组的形式被作为第一个参数传递到$app->group方法中。

要了解更多路由分组,下面我们通过几个简单的应用实例来展示其特性。

中间件

要分配中间件给分组中的所有路由,可以在分组属性数组中使用middleware键。中间件将会按照数组中定义的顺序依次执行:

$app->group(['middleware' => 'auth'], function () use ($app){

$app->get('/', function () {

// 使用 Auth 中间件

});

$app->get('user/profile', function () {

// 使用 Auth 中间件

});

});

命名空间

另一个通用的例子是路由分组分配同一个PHP命名空间给多个控制器,可以在分组属性数组中使用namespace参数来指定分组中控制器的命名空间:

$app->group(['namespace' => 'Admin'], function() use ($app){

// 控制器在 "App\Http\Controllers\Admin" 命名空间下

$app->group(['namespace' => 'User'], function(){

// 控制器在 "App\Http\Controllers\Admin\User" 命名空间下

});

});

路由前缀

属性prefix可以用来为分组中每个给定URI添加一个前缀,比如,你想要为所有路由URI前面添加前缀admin:

$app->group(['prefix' => 'admin'], function () use ($app){

$app->get('users', function () {

// 匹配 "/admin/users" URL

});

});

你还可以使用prefix参数为分组路由指定公共参数:

$app->group(['prefix' => 'accounts/{account_id}'], function () use ($app){

$app->get('detail', function ($account_id){

// 匹配 accounts/{account_id}/detail URL

});

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值