为速度而生的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-路由与中间件的主要内容,如果未能解决你的问题,请参考以下文章

lumen框架数据流的分析

在多个文件中拆分 Lumen 6.X 路由

用lumen构建API的相关流程

Lumen/Laravel - 使用自定义路由器

Laravel Lumen - 处理无效路由

Lumen实现用户注册登录认证