暴动率限制器
节点JS 利率限制器 暴动游戏 API
特征
目录
安装
$ npm install @fightmegg/riot-rate-limiter
使用量
import { RiotRateLimiter } from "@fightmegg/riot-rate-limiter";
const limiter = new RiotRateLimiter();
// async await
const response = await limiter.execute({
url: "https://euw1.api.riotgames.com/lol/some/method",
options: {
headers: {
"X-Riot-Token": "...",
},
},
});
// Promises
limiter
.execute({
url: "https://euw1.api.riotgames.com/lol/some/method",
options: {
headers: {
"X-Riot-Token": "...",
},
},
})
.then((response) => {
// ...
});
API 密码
constructor
new RiotRateLimiter({
debug: boolean = false,
concurrency: number = 1,
retryAfterDefault: number = 5000,
retryCount: number = 4,
datastore: 'local' | 'ioredis' = 'local'
redis?: RedisConnectionOptions | RedisConnectionString = null
});
.execute
此库使用 节点比对 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}在兜帽下面 用来提出要求 这个 .execute 方法从字面上传递所有给 节点比对因此,你可以改变诸如 方法, (中文(简体) ), 页眉 包括:.
任何不是2xx或429的反应都会被扔出,必须被抓住.
我们会的 自动重试 429 回复,直到重试时止 4),利用 Retry-After 头来尊重API.
limiter.execute({
url: RequestInfo,
options: RequestInit,
},
jobOptions?: Bottleneck.JobOptions
);
第二个参数是可选的,允许您指定 任务选项 例如工作优先级和用于日志识别的独特ID。 工作重量不能从 1 不管你通过什么.
.rateLimiters
这是一个 地图 在创建的所有限速器中,我们至少为 区域 ,然后,每份申请至少有1份费率限制 方法 在那个区域下面.
我们用图书馆 圆顶 作为我们的费率限制器,它支持连锁费率限制器,这意味着父母的费率限制器总是受到子女的尊重.
您可以访问 区域 费率限制通过: limiter.rateLimiters[region].main 你可以访问 方法 费率限制通过: limiter.rateLimiters[region][method].main
帮助者
我们还提供了一些辅助函数和对象.
提取区域
这可以从您的 URL 中提取区域或平台 :
import { extractRegion } from "@fightmegg/riot-rate-limiter";
extractRegion("https://na1.api.riotgames.com/method"); // returns na1
提取方法
这可以从您的 URL 中提取方法 :
import { extractMethod } from "@fightmegg/riot-rate-limiter";
extractMethod(
"https://na1.api.riotgames.com/lol/champion-mastery/v4/scores/by-summoner/12345"
); // returns 'CHAMPION_MASTERY.GET_CHAMPION_MASTERY_SCORE'
方法和住房
对于那些想要建立 RiotGamesAPI 此速率限制器上方的库, 我们导出两个名为对象 方法和住房。 您可以使用这些导出为您创建 URL, 如下所示:
import { compile } from "path-to-regexp";
import { HOST, METHODS } from "@fightmegg/riot-rate-limiter";
const createHost = compile(HOST, { encode: encodeURIComponent });
const createPath = compile(METHODS.ACCOUNT.GET_BY_PUUID, {
encode: encodeURIComponent,
});
const url = `https://${createHost({ platformId: "euw1" })}${createPath({
puuid: "12345",
})}`;
调试
如果你想看到想要的 速率限制器正在做,我们使用 调试 用于记录的模块。 简单的运行您的应用程序:
DEBUG=riotratelimiter* node ...
测试
单位测试 : npm test
E2E测试: npm run test:e2e