云服务器

为速度而生的LARAVEL框架---LUMEN(二)-路由与中间件

2017-12-25 11:32:02 0

上一节讲到Lumen的安装以及部署相信大家已经对Lumen有初步的印象,这一节就讲讲路由与中间件

Http路由

你可以在 app/Http/routes.php 文件中定义应用程序的大多数路由。最基本的 Lumen 路由仅接受 URI 和一个闭包:Route::get('/test', function () { return 'Hello World'; });

这里还可以定义所有的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; });花括号就代表了参数

路由的参数格式约束: ``` 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的一大亮点,这样声明路由可以让前端直接参照我们路由的格式进行接口开发,减少好多沟通成本以及让日后的维护更加方便。

 
上一篇: 无

微信关注

获取更多技术咨询