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