Обзор API World of Tanks

description-5430746 Разбор приципов работы с API World of Tanks — как с ним работать и получать данные.

Принципы получения данных из API World of Tanks:

После запуска независимого от Wargaming, своего API для World of Tanks, в личку ВКонтакте как всегда посыпались однотипные вопросы, «че да как и почему?» и просьбы о помощи.

Что такое API World of Tanks — это выдача всех возможных данных танков для дальнейшей обработки в ваших собстенных скриптах (на вашем сайте или в любом приложении). Как пример, на основе ее я полностью переделал сервис выдачи ТТХ танков: http://www.protank.su/ttx/.

Чем мой API лучше того, что дает официально Wargaming:

  1. API от разрабов дает малое количество сведений о танках, лишь самые основные, мой — все возможные.
  2. API от разрабов требователен к количеству запросов на сервер, мой — нет.
  3. API от разрабов могут либо вообще прикрыть, или же, заблокировать запросы только вашего IP.
  4. API от разрабов выдает данные только в одном формате.
  5. API от разрабов выдает данные только о доступных в игре танках.

Как выводить ТТХ танков, используя мой API World of Tanks ? Все зависит от того, каким языком вы владеете, и больше не от чего. Например, эти данные легко обрабатываются в Python, С++ или PHP. Но так как 90% сайтов пишутся на PHP, поэтому его и возьму для пояснения.

Для примера возьмем танк Т-34-85. Чтобы получить все данные этого танка в том или ином формате, нужно знать внутреннее ID этого танка, ибо запрос на получение данных таков:

  • для xml: http://www.ProTank.su/api/api.php?file=xml&tank_id=ID
  • для json: http://www.protank.su/api/api.php?file=json&tank_id=ID

Как видно из приложения «Полезности», что в самом низу страницы http://www.protank.su/api/, танку T-34-85 соответствует ID 11.

Какой формат выдачи использовать ? Решать только вам, я лично предпочитаю работать с объектами (исходный формат XML), а не с массивами (что можно получить из формата JSON). Но, в любом случае, рассмотрю оба варианта.

Разница в обработке данных форматов XML и JSON в PHP такова, что, если использовать встроенные simpleXml и обработчик JSON, то функция simplexml_load_file() возвращает нам объект, а функция json_decode($file, TRUE) с инструкцией TRUE — массив (а без TRUE — объект). Как я уже говорил, лично мне удобнее работать с XML.

Работа с форматом XML.

Если вы хотите, чтобы json_decode() выдавала вам массив, то нужно ее использовать так: json_decode($file, TRUE), а если нужен на выходе объект, то json_decode($file). В случае с объектом, принцип точно такой же, как и для XML.

В случае, если на выходе имеем ассоциативный массив, полученный из JSON файла:

// Заводим переменную под ID танка: $id = (integer)11; // Заводим переменную под json файл танка: $tank_json = file_get_contents((string)»http://protank.su/api/api.php?file=json&tank_id=».$id); // Получаем и преобразуем json данные в ассоциативный массив: $json = json_decode($tank_json, TRUE); // Дальше идет обычная работа с массивами: // 1. Определим сколько всего орудий и башен у танка: $guns_count = (integer)$json[«data»][«total_gun_count»]; $turrets_count = (integer)$json[«data»][«turrets_count»]; echo $turrets_count; // выдаст 2 echo $guns_count; // выдаст 7 И так далее и т.п. ?>

Раздел сайта: Моды для игры World of Tanks

Оцените статью
protank.su
Adblock
detector