Laravel 5.2 新特性系列 -- 訪問頻率限制中介軟體throttle的使用

來源:互聯網
上載者:User

1、訪問頻率限制概述

頻率限制經常用在API中,用於限制獨立要求者對特定API的請求頻率。例如,如果設定頻率限制為每分鐘1000次,如果一分鐘內超過這個限制,那麼伺服器就會返回 429: Too Many Attempts. 響應。

通常,一個編碼良好的、實現了頻率限制的應用還會回傳三個回應標頭: X-RateLimit-Limit , X-RateLimit-Remaining 和 Retry-After (如果達到限制次數只能擷取到 Retry-After 頭)。 X-RateLimit-Limit 告訴我們在指定時間內允許的最大請求次數, X-RateLimit-Remaining 指的是在指定時間段內剩下的請求次數, Retry-After 指的是距離下次重試請求需要等待的時間(s)。

注意:每個API都會選擇一個自己的頻率限制時間跨度,GitHub選擇的是1小時,Twitter選擇的是15分鐘,Laravel中介軟體選擇的是1分鐘。

2、如何使用Laravel的訪問頻率限制中介軟體

在Laravel5.2的新特性中,你可以使用一個新的中介軟體 throttle ,讓我們先來看看這個中介軟體的用法,首先我們定義一個路由規則如下:

Route::group(['prefix'=>'api'],function(){    Route::get('users',function(){        return \App\User::all();    });});

然後我們將中介軟體 throttle 添加到其中, throttle 預設限制每分鐘嘗試60次,並且在一分鐘內訪問次數達到60次後禁止訪問:

Route::group(['prefix'=>'api','middleware'=>'throttle'],function(){    Route::get('users',function(){        return \App\User::all();    });});

如果你訪問 api/users 路由,就會看到回應標頭如下所示:

該響應意味著:

  • 請求成功(狀態代碼為200)
  • 每分鐘只能訪問60次
  • 在本時間段內還能訪問57次

如果訪問次數超過60次,回應標頭如下:

同時,響應內容文本為:Too Many Attempts。

如果44s後重試,頁面恢複正常訪問。

3、自訂throttle中介軟體

讓我們來做一點自訂,現在我們想要限制每分鐘訪問5次:

Route::group(['prefix'=>'api','middleware'=>'throttle:5'],function(){    Route::get('users',function(){        return \App\User::all();    });});

如果我們想要改變達到指定限制次數後的等待時間,可以這樣自訂:

Route::group(['prefix'=>'api','middleware'=>'throttle:5,10'],function(){    Route::get('users',function(){        return \App\User::all();    });});
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.