国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

?? 基于 Lua 腳本簡單限流插件

v0.0.5 版本
2022-04-05 版本更新時間
1751 安裝
16 star

簡介

為防止濫用,你應(yīng)該考慮對您的 API 限流。 例如,您可以限制每個用戶 10 分鐘內(nèi)最多調(diào)用 API 100 次。 如果在規(guī)定的時間內(nèi)接收了一個用戶大量的請求,將返回響應(yīng)狀態(tài)代碼 429 (這意味著過多的請求)。

安裝

composer require tinywan/limit-traffic

使用

應(yīng)用中間件

config/middleware.php 中添加全局中間件如下:

return [
    // 全局中間件
    '' => [
        // ... 這里省略其它中間件
        Tinywan\LimitTraffic\Middleware\LimitTrafficMiddleware::class,
    ],
    // api應(yīng)用中間件
    'api' => [
        Tinywan\LimitTraffic\Middleware\LimitTrafficMiddleware::class,
    ]
];

路由中間件

注意:需要 workerman/webman-framework 版本 >= 1.0.12

我們可以給某個一個或某一組路由設(shè)置中間件。例如在 config/route.php 中添加如下配置:

Route::any('/admin', [app\admin\controller\Index::class, 'index'])
->middleware([Tinywan\LimitTraffic\Middleware\LimitTrafficMiddleware::class]);

// 分組路由
Route::group('/blog', function () {
   Route::any('/create', function () {return response('create');});
})->middleware([Tinywan\LimitTraffic\Middleware\LimitTrafficMiddleware::class]);

?? 返回允許的請求的最大數(shù)目及時間

返回允許的請求的最大數(shù)目及時間,例如:[100, 600] 表示在 600 秒內(nèi)最多 100 次的 API 調(diào)

Tinywan\LimitTraffic\RateLimiter::getRateLimit(); // 返回 [100, 600]

修改默認(rèn)請求配置 config/plugin/tinywan/limit-traffic/app.php

?? 請求限制參考

當(dāng)速率限制被激活,默認(rèn)情況下每個響應(yīng)將包含以下 HTTP 頭發(fā)送目前的速率限制信息

截圖

響應(yīng)HTTP狀態(tài)碼

  • Http Status 429

響應(yīng)header返回內(nèi)容

  • X-Rate-Limit-Limit 同一個時間段所允許的請求的最大數(shù)目
  • X-Rate-Limit-Remaining 在當(dāng)前時間段內(nèi)剩余的請求的數(shù)量
  • X-Rate-Limit-Reset 為了得到最大請求數(shù)所等待的秒數(shù)

自定義自己的 Response

使用場景

  • 每個項目有標(biāo)準(zhǔn)的統(tǒng)一輸出,自定義返回內(nèi)容
  • 前后端分離:前端要求返回的 HTTP狀態(tài)碼并不是 429,而是 200 或者其他
  • 響應(yīng)的body不是 {"code":0,"msg":"Too Many Requests"},而是 {"error_code":200,"message":"Too Many Requests"}等其他內(nèi)容

自定義HTTP狀態(tài)碼

編輯 config/plugin/tinywan/limit-traffic/app.php 文件的 status HTTP 狀態(tài)碼(默認(rèn)值是 429

自定義body返回內(nèi)容

編輯 config/plugin/tinywan/limit-traffic/app.php 文件的 body 的字段

默認(rèn)選項是

{
    "code": 0,
    "msg": "Too Many Requests",
    "data": null
}

自定義選項參考一

1、假設(shè)status HTTP 狀態(tài)碼設(shè)置為 200

2、假設(shè)body的數(shù)組設(shè)為為

'body' => [
    'error_code' => 200,
    'message' => '請求太多請稍后重試'
]

則響應(yīng)內(nèi)容為

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

{
    "error_code": 200,
    "message": "請求太多請稍后重試"
}

其他的可以根據(jù)自身業(yè)務(wù)自定義即可

贊助商