Сравнение цен маркетов
Что собираем
Заголовок раздела «Что собираем»Поиск предмета → таблица цен продавцов и заявок покупателей → дневной график выбранного маркета. Сервер приложения хранит ключ и кеширует публичные данные; браузер получает только нужные поля.
Порядок запросов
Заголовок раздела «Порядок запросов»GET /v1/items?q=…&limit=20после debounce, не на каждое нажатие клавиши.GET /v1/items/{item_id}/marketsдля выбранного предмета.GET /v1/items/{item_id}/historyдля одного маркета и выбранного диапазона.
Сортируй asks по amount по возрастанию, bids — по убыванию. Отображай их отдельно. Форматируй деньги по minor_units. Не объединяй Steam wallet balance и выводимые денежные балансы.
Проверки готовности
Заголовок раздела «Проверки готовности»- Поиск возвращает предметы из API, а не зашитые демонстрационные цены.
- При смене фазы используется её
item_id. - Пустая история показывает понятное пустое состояние.
- На графике нет точек, которых API не вернул.
- При 429 учитывается
Retry-After, при 401 запросы останавливаются. - Ключ отсутствует в HTML, клиентском bundle, URL и логах.
- Повторный показ того же предмета использует кеш; 100 зрителей не создают 100 upstream-запросов.
Это сравнение наблюдаемых предложений, не торговый бот и не обещание прибыли.
Готовый пример
Заголовок раздела «Готовый пример»Скачай Market comparison starter и SDK из Downloads.
Имена файлов и SHA-256 указаны в манифесте
(examples и artifacts). Проверь контрольные суммы, распакуй пример в новую
папку, установи локальный архив SDK командой
npm install --ignore-scripts /path/to/archive.tgz, задай CSFOLDER_API_KEY
в серверном окружении и запусти npm start. Открой http://127.0.0.1:4319.
Нужен Node.js 22+; подробности есть в README архива.
Интерфейс примера на английском. Данные приходят из API, демонстрационных цен нет. История — отдельные точки дневных asks за последние 30 дней UTC и таблица значений. Есть пагинация поиска, предметы только с bids, неизвестные timestamps и пустая история. Цены и история кешируются на 30 минут, поиск — на 30 секунд. При 401/403 или исчерпании месячной квоты нужно исправить ключ/тариф и перезапустить сервер; 429 приостанавливает запросы на Retry-After, повтор — вручную. Фонового polling нет.
Это локальный пример, не готовый публичный прокси. Для публичного приложения нужны авторизация пользователей, защита от злоупотребления и общий кеш/лимитер между репликами. Не открывай пример наружу через туннель без этих мер. Архив не создаёт API-доступ: сначала проверь статус релиза.