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

?? 基于 Lua 腳本簡(jiǎn)單限流插件

v0.0.5 版本
2022-04-05 版本更新時(shí)間
1765 安裝
16 star

簡(jiǎn)介

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

安裝

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

我們可以給某個(gè)一個(gè)或某一組路由設(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]);

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

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

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

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

?? 請(qǐng)求限制參考

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

截圖

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

  • Http Status 429

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

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

自定義自己的 Response

使用場(chǎng)景

  • 每個(gè)項(xiàng)目有標(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)選項(xiàng)是

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

自定義選項(xiàng)參考一

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

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

'body' => [
    'error_code' => 200,
    'message' => '請(qǐng)求太多請(qǐng)稍后重試'
]

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

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

{
    "error_code": 200,
    "message": "請(qǐng)求太多請(qǐng)稍后重試"
}

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

贊助商