API و توسعهدهندگان
صفحهبندی و مرتبسازی
مسیرهایی که فهرست برمیگردانند (سرورها و اخبار) صفحهبندی میشوند.
پارامترها#
| پارامتر | توضیح | پیشفرض | حداکثر |
|---|---|---|---|
page | شماره صفحه، از ۱ | 1 | — |
pageSize در /servers | تعداد سرور در هر صفحه | 24 | 60 |
pageSize در /servers/{server}/news | تعداد خبر در هر صفحه | 20 | 50 |
مقدار بیشتر از حداکثر خطای 400 با کد VALIDATION میدهد؛ خودکار کم نمیشود.
ساختار پاسخ#
JSON
{
"items": [ ... ],
"total": 214,
"page": 2,
"pageSize": 24,
"hasMore": true
}| فیلد | توضیح |
|---|---|
items | موارد همین صفحه |
total | تعداد کل نتایج با همین فیلترها |
page و pageSize | همان مقادیری که فرستادهاید (یا پیشفرض) |
hasMore | اگر صفحه بعدی وجود دارد true است |
خواندن همه صفحهها#
JavaScript
async function allServers(game) {
const out = [];
for (let page = 1; ; page++) {
const res = await fetch(`https://gameroute.ir/api/v1/servers?game=${game}&page=${page}&pageSize=60`, {
headers: { Authorization: `Bearer ${process.env.GAMEROUTE_API_KEY}` },
});
const data = await res.json();
out.push(...data.items);
if (!data.hasMore) return out;
}
}Python
def all_servers(game, key):
page, out = 1, []
while True:
r = requests.get(
"https://gameroute.ir/api/v1/servers",
params={"game": game, "page": page, "pageSize": 60},
headers={"Authorization": f"Bearer {key}"},
timeout=10,
).json()
out += r["items"]
if not r["hasMore"]:
return out
page += 1ترتیب و ثبات نتایج#
ترتیب فهرست سرورها با پارامتر sort تعیین میشود:
| مقدار | ترتیب |
|---|---|
rank (پیشفرض) | همان رتبهبندی سایت: اول سرورهای دارای بوست فعال بیشتر، بعد سرورهای آنلاین، بعد تعداد بازیکن |
players | آنلاینها اول، بعد بیشترین بازیکن |
rating | بیشترین میانگین امتیاز، بعد تعداد امتیاز |
new | جدیدترین سرورهای ثبتشده |
فقط با sort=rank فیلد rank هر سرور مقدار دارد. چون تعداد بازیکنان مدام تغییر میکند، ترتیب بین دو درخواست ممکن است جابهجا شود و یک سرور در دو صفحه پشت سر هم تکرار یا جا بیفتد. اگر به فهرست کامل و بدون تکرار نیاز دارید، نتایج را با id یکتا کنید یا از sort=new استفاده کنید که ترتیبش پایدار است.
اخبار همیشه از جدید به قدیم مرتب میشوند.