美文网首页猿人旅程
Laravel 5.2 新特性

Laravel 5.2 新特性

作者: Junting | 来源:发表于2017-03-03 17:04 被阅读27次

    路由模型绑定

    路由直接绑定模型,直接返回根据路由url 的格式的数据,省略了一步写查询的操作。
    下面看个例子:

    Route::get('/user/{user}', function(\App\User $user){
        // User::findOrFail($user); 直接省略了
        // 指定的 {user} 是 ID,换成别的就不行了
        // 并且 传递的参数名,和函数里传递的参数名必须是一致的
        return $user;  
    });
    

    如果想通过别的条件,来直接返回查询结果,怎么做,看下面一个列子:

    // 首先你得在 路由服务提供 RouteServiceProvider 里注册绑定 你要通过什么条件的参数名
    
        public function boot(Router $router)
        {
            parent::boot($router);
    
            \Route::bind('name', function($user){
                return User::where('name', $user)->firstOrFail();
            });
        }
    
    // 这样绑定后,我们在到routes.php 修改下
    
    Route::get('/user/{name}', function (\App\User $user) {
        // 自己填写绑定的方法,对于函数参数名就没有什么严格要求了
        return $user; 
    });
    
    

    扩展: 在测试新特性时,在 tinker (php artisan tinker)中使用了 factory 工厂模式来填充一些测试数据

    Psy Shell v0.7.2 (PHP 7.0.13-1+deb.sury.org~xenial+1 — cli) by Justin Hileman
    >>> namespace App;
    => null
    // 参数1 传递的模型  参数2 times 伪造数据的条数
    >>> factory(User::class, 10)->create();
    ^[[5~=> Illuminate\Database\Eloquent\Collection {#657
         all: [
           App\User {#652
             name: "Nels Koch",
             email: "emard.leonora@example.org",
             updated_at: "2017-03-03 07:27:42",
             created_at: "2017-03-03 07:27:42",
             id: 3,
           },
    
    

    访问次数限制 throttle

    应用场景:

    限制对客户端请求服务器API数据接口在一分钟内或一段时间内请求次数的限定,减少服务器负载的压力。

    先安装一个 Httpie 工具,这里我是在ubuntu 下安装的

     $ sudo apt-get install httpie 
     或者: 
     $ brew install httpie (首先你要安装 brew) 
    

    我们来对 上节使用的路由进行限定下

    Route::get('/user/{name}', function (\App\User $user) {
        return $user;
    })->middleware('throttle'); 
    
    默认: `throttle` 一分钟内限定请求次数为 60 次。
    想要修改次数,如下:
    Route::get('/user/{name}', function (\App\User $user) {
        return $user;
    })->middleware('throttle:3');
    

    安装好后,我们来使用下httpie工具

    vagrant@homestead:~$ http http://learnlaravel52.app/user/Twitch
    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Connection: keep-alive
    Content-Type: application/json
    Date: Fri, 03 Mar 2017 07:50:40 GMT
    Server: nginx/1.11.5
    Set-Cookie: XSRF-TOKEN=eyJpdiI6IkZoXC93bkNQVjFFQ1FxaWJwaDZ1YUFBPT0iLCJ2YWx1ZSI6I  nBOeThQM0FUeGdoZkZFdUlYUU9NOW15OU0wU3NcLzh0eHRGN2U3d0VPbUdoS3diRlpDZGxoNThRS1hqS  UZZUDlpM3FmWDdkZjROR2lhYjdCNVowVlE3UT09IiwibWFjIjoiYWFkOWUwZjk0MDMzMDMzNzg5ZTE4Y  TQ2MzZlOTYxZjY0OTA1MWY1ZmVjNzQzNTAzZTFkY2I1N2ZjYTVkM2VmMyJ9; expires=Fri, 03-Mar  -2017 09:50:40 GMT; Max-Age=7200; path=/
    Set-Cookie: laravel_session=eyJpdiI6ImJPall6ZFpRUlg0dlpnWTA1bmI1Z1E9PSIsInZhbHVl  IjoibmZYMmVOc3ViTDVQMSt4SEx0elFuUmRMeUtQMnIrZlZTbDQzeXVVMndURDlKN2VVdExGZFlPOFBZ  c0tId1RXTzMwMFd5RUEyYlY0M05LMTBONlh1dXc9PSIsIm1hYyI6IjY0ZmQ3M2Q3N2IxMjk1ZGU3OTll  YzA1MzJiZTkxYjZkMDcyZWIzYmZmNzIwYWVjYWE0M2NkOGNjNTA4NjkxNzEifQ%3D%3D; expires=Fr  i, 03-Mar-2017 09:50:40 GMT; Max-Age=7200; path=/; HttpOnly
    Transfer-Encoding: chunked
    X-RateLimit-Limit: 60     // 一分钟内请求次数
    X-RateLimit-Remaining: 59 // 还剩请求次数
    
    {
        "created_at": "2017-03-01 17:16:20",
        "email": "342766475@qq.com",
        "id": 1,
        "name": "Twitch",
        "updated_at": "2017-03-01 17:21:38"
    }
    
    // 次数超过了限定就会 返回一个 Too Many Attermpts。
    

    5.2 版本 自带了 登陆和注册

    执行下面的命令,重新访问你就可以看到了

    php  artisan make:auth
    
    • 默认自带的 登录注册,会对密码输入错误5次,后就会报一分钟后再次尝试。
    • 查看auth 的路由 ,double shift 查找 Router.php 文件,然后找到auth 方法,我们就能很清新的看到具体的路由了

    新增了一个 api 的 middleware 中间件

    相关文章

      网友评论

        本文标题:Laravel 5.2 新特性

        本文链接:https://www.haomeiwen.com/subject/njfrgttx.html