Заголовки запросов

Для всех запросов к API необходимо указывать следующие заголовки:

ЗаголовокОбязательныйОписание
X-API-KeyДаВаш API-ключ
AcceptНетapplication/json

Лимиты

Deps API использует систему ограничения частоты запросов для обеспечения стабильной работы сервиса для всех пользователей.

Тип ключаИнтервал в секундахЗапросов в минуту
Стандартный106
КорпоративныйДоговорнойДоговорной

При превышении лимита API возвращает код состояния 429 Too Many Requests и заголовок Retry-After, указывающий количество секунд до момента, когда можно будет сделать следующий запрос.

Рекомендуемые настройки клиента

1

Настройка таймаутов

Рекомендуется устанавливать следующие таймауты для HTTP-клиента:

  • Таймаут соединения: 5 секунд
  • Таймаут ожидания ответа: 30 секунд
2

Реализация повторных попыток

Для повышения надежности вашего приложения рекомендуется реализовать механизм повторных попыток с экспоненциальной задержкой для кодов ошибок 5xx и 429:

main.py
import time
import requests

def request_with_retry(url, headers, max_retries=3):
    retries = 0
    while retries < max_retries:
        try:
            response = requests.get(url, headers=headers)
            if response.status_code < 500 and response.status_code != 429:
                return response
                
            if response.status_code == 429:
                retry_after = int(response.headers.get('Retry-After', 1))
                time.sleep(retry_after)
            else:
                time.sleep(2 ** retries)
                
        except requests.exceptions.RequestException:
            pass
            
        retries += 1
        
    raise Exception("Превышено максимальное количество попыток")
3

Мониторинг и логирование

Для эффективного отслеживания использования API рекомендуется внедрить логирование всех запросов и ответов в вашем приложении. Это поможет диагностировать проблемы и оптимизировать использование API.

4

Кэширование

Для оптимизации производительности и снижения количества запросов рекомендуется кэшировать ответы API, особенно для данных, которые меняются редко:

index.js
const cache = new Map();
const CACHE_TTL = 300000;

async function getCachedPlayerData(nickname, serverId, apiKey) {
  const cacheKey = `player_${nickname}_${serverId}`;
  const cachedData = cache.get(cacheKey);
  
  if (cachedData && (Date.now() - cachedData.timestamp < CACHE_TTL)) {
    return cachedData.data;
  }
  
  const response = await fetch(`https://api.depscian.tech/v2/player/find?nickname=${nickname}&serverId=${serverId}`, {
    headers: { 'X-API-Key': apiKey }
  });
  
  if (response.ok) {
    const data = await response.json();
    cache.set(cacheKey, { data, timestamp: Date.now() });
    return data;
  }
  
  throw new Error(`Ошибка API: ${response.status}`);
}