app http routes.php,HTTP 路由 |《Lumen 中文文档 5.3 5.3》| Laravel China 社区

本文档最新版为 6.x,旧版本可能放弃维护,推荐阅读最新版!

HTTP 路由

Basic Routing

你可以在 app/Http/routes.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);

路由参数

必选参数

有时候你可能需要从 URI 中获取一些参数。例如,从 URL 获取用户的 ID。这时可通过自定义路由参数来获取:

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

return 'User '.$id;

});

你可以依照路由需要,定义任意数量的路由参数:

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

//

});

路由的参数都会被放在「大括号」内。当运行路由时,参数会通过路由闭包来传递。

注意: 路由参数不能包含 - 字符。请用下划线 (_) 替换。

命名路由

命名路由让你可以更方便的为特定路由生成 URL 或进行重定向。你可以使用 as 数组键指定名称到路由上:

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

//

}]);

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

$app->get('profile', [

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

]);

对命名路由生成 URLs

一旦你在指定的路由中分配了名称,则可通过 route 函数来使用路由名称生成 URLs 或重定向:

// 生成 URLs...

$url = route('profile');

// 生成重定向...

return redirect()->route('profile');

如果路由定义了参数,那么你可以把参数作为第二个参数传递给 route 方法。指定的参数将自动加入到 URL 中:

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

//

}]);

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

路由群组

路由群组允许你共用路由属性,例如:中间件、命名空间,你可以利用路由群组统一为多个路由设置共同属性,而不需在每个路由上都设置一次。共用属性被指定为数组格式,当作 $app->group 方法的第一个参数。

为了了解更多路由群组的相关内容,我们可通过几个常用样例来熟悉这些特性。

中间件

指定中间件到所有群组内的路由中,则可以在群组属性数组里使用 middleware 参数。中间件将会依照列表内指定的顺序运行:

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

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

// Uses Auth Middleware

});

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

// Uses Auth Middleware

});

});

命名空间

另一个常见的例子是,指定相同的 PHP 命名空间给控制器群组。可以使用 namespace 参数来指定群组内所有控制器的命名空间:

$app->group(['namespace' => 'App\Http\Controllers\Admin'], function() use ($app)

{

// 控制器在「App\Http\Controllers\Admin」命名空间

$app->group(['namespace' => 'App\Http\Controllers\Admin\User'], function() use ($app) {

// 控制器在「App\Http\Controllers\Admin\User」命名空间

});

});

路由前缀

通过路由群组数组属性中的 prefix,在路由群组内为每个路由指定的 URI 加上前缀。例如,你可能想要在路由群组中将所有的路由 URIs 加上前缀 admin:

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

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

// Matches The "/admin/users" URL

});

});

你也可以使用 prefix 参数去指定路由群组中共用的参数:

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

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

// Matches The "/accounts/{account_id}/detail" URL

});

});

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值