为速度而生的Laravel框架Lumen-路由与中间件
Posted 睿江云计算
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为速度而生的Laravel框架Lumen-路由与中间件相关的知识,希望对你有一定的参考价值。
上一节讲到Lumen的安装以及部署,相信大家已经对Lumen有初步的印象。
这一节就讲讲路由与中间件。
Http路由
你可以在 app/Http/routes.php 文件中定义应用程序的大多数路由。最基本的 Lumen 路由仅接受 URI 和一个闭包:
```
Route::get('/test', function () {
return 'Hello World';
});
```
![](http://i.imgur.com/y6bQxR1.png)
这里还可以定义所有的http响应:
```
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
```
那么参数是如何定义的呢?
其实也是好简单
```
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
```
花括号就代表了参数
![](http://i.imgur.com/sMuPO3n.png)
路由的参数格式约束:
```
Route::get('user/{id}', function ($id) {
//
})->where('id', '[0-9]+');
```
路由组概念:
```
Route::group(['middleware' => 'auth'], function () {
Route::get('/', function () {
// 使用 `Auth` 中间件
});
Route::get('user/profile', function () {
// 使用 `Auth` 中间件
});
});
路由组允许共享路由属性,例如中间件和命名空间等,这样就可以把所有公共属性放到组上面了,就不用单独一个个配置了。
中间件
Lumen的中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求,中间件可以被用来执行各式各样的任务。
使用 make:middleware 这个 Artisan 命令创建新的中间件:
```
php artisan make:middleware CheckAge
```
该命令将会在 app/Http/Middleware 目录内新建一个 CheckAge 类。在这个中间件内,我们仅允许请求的 id 参数大于 50 时访问该路由,否则,会将用户请求重定向到 home URI 。
```
<?php
namespace App\Http\Middleware;
use Closure;
class CheckID
{
/**
* 处理传入的请求
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->id <= 50) {
return redirect('home');
}
return $next($request);
}
}
```
创建好中间件后,我们需要将该中间件类列入 app/Http/Kernel.php 类里的 $middleware 属性
```
// App\Http\Kernel 类内
protected $routeMiddleware = [
'guest' => \App\Http\Middleware\CheckID::class,
];
```
最后一步,为路由添加上中间件
```
Route::get('test/id', function () {
//
})->middleware('CheckID');
```
路由和中间件是Lumen的一大亮点,这样声明路由可以让前端直接参照我们路由的格式进行接口开发,减少好多沟通成本以及让日后的维护更加方便。
还有下期预告值得期待哦
为速度而生的Laravel框架Lumen(三)-ORM
以上是关于为速度而生的Laravel框架Lumen-路由与中间件的主要内容,如果未能解决你的问题,请参考以下文章