Формати відповідей
Кожен метод у веб-API Steamworks може повертати відповіді в кількох форматах. Стандартно всі відповіді повертаються у форматі
JSON
. Однак кожен запит може містити необов’язковий параметр
format
, який змінює формат відповіді.
Приклад:http://api.steampowered.com/ISteamNews/GetNewsForApp/v0002/?appid=440&count=1&format=xml
Цей параметр приймає наступні значення:
-
JSON
- API завжди повертає об’єкт, що містить іменований об’єкт і дані результату.
- Масиви представлені як масиви з назвою типу об’єктів у масиві.
- Тип null представлений як null у форматі JSON.
- 64-бітні числа повертаються як текстові значення.
- Приклад:
{
"appnews": {
"appid": 440,
"newsitems": [
{
"gid": "1904306376092568991",
"title": "Prince of Prolander Event ",
"url": "http://store.steampowered.com/news/externalpost/tf2_blog/1904306376092568991",
"is_external_url": true,
"author": "",
"contents": "<a href=/"http://rgl.gg/default.aspx/"><img src=/"https://steamcdn-a.akamaihd.net/steam/news/29555/prince.png?t=1495219023/"></a><br><br>/n<p><b>This Sunday at 4:30pm EST</b> <a href=/"http://rgl.gg/default.aspx/" target=\"_blank\">RGL.gg</a> is hosting their Prince of Prolander event. See legendary players <a href=/"https://www.youtube.com/user/stabbyvideo/" target=\"_blank\">Stabby</a> and <a href=/"https://www.youtube.com/user/danethebrain/" target=\"_blank\">Uncle Dane</a> duke it out to answer the age old question: Who is better? Spies or Engies? Come see them settle the score once and for all in the new competitive TF2 format, Pick/Ban Prolander. Be sure to tune in to <a href=/"https://www.twitch.tv/extvesports/" target=\"_blank\">Twitch</a> this Sunday, and witness this historic event!</p><br>",
"feedlabel": "TF2 Blog",
"date": 1495218420,
"feedname": "tf2_blog",
"feed_type": 0,
"appid": 440
}
],
"count": 2385
}
}
-
XML
- Атрибути XML не використовуються.
- Масиви представлені як серія піделементів в елементі типу масив.
- Тип null представлений словом null між теґами елемента.
- Приклад:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE appnews>
<appnews>
<appid>440</appid>
<newsitems>
<newsitem>
<gid>1904306376092568991</gid>
<title>Prince of Prolander Event </title>
<url>http://store.steampowered.com/news/externalpost/tf2_blog/1904306376092568991</url>
<is_external_url>true</is_external_url>
<author/>
<contents><a href="http://rgl.gg/default.aspx"><img src="https://steamcdn-a.akamaihd.net/steam/news/29555/prince.png?t=1495219023"></a><br><br>
<p><b>This Sunday at 4:30pm EST</b> <a href="http://rgl.gg/default.aspx" target="_blank">RGL.gg</a> is hosting their Prince of Prolander event. See legendary players <a href="https://www.youtube.com/user/stabbyvideo" target="_blank">Stabby</a> and <a href="https://www.youtube.com/user/danethebrain" target="_blank">Uncle Dane</a> duke it out to answer the age old question: Who is better? Spies or Engies? Come see them settle the score once and for all in the new competitive TF2 format, Pick/Ban Prolander. Be sure to tune in to <a href="https://www.twitch.tv/extvesports" target="_blank">Twitch</a> this Sunday, and witness this historic event!</p><br></contents>
<feedlabel>TF2 Blog</feedlabel>
<date>1495218420</date>
<feedname>tf2_blog</feedname>
<feed_type>0</feed_type>
<appid>440</appid>
</newsitem>
</newsitems>
<count>2385</count>
</appnews>
-
VDF (Valve Data Format, формат даних Valve)
- Це внутрішній формат даних Valve, що використовується іграми на рушії Source. Запит GetSchema в TF2 повертає дані, схожі на items/items_game.txt (однак якості не розширюються до об’єктів із полем value).
- Документація доступна на вікі спільноти розробників Valve й на офіційній вікі Team Fortress 2.
- Масиви подаються як VDF-масив із назвою типу об’єктів у масиві. VDF-масив є об’єктом, де кожне входження пронумероване як ключ у лапках.
- Тип null подається як порожній рядок.
- Приклад:
"appnews"
{
"appid" "440"
"newsitems"
{
"0"
{
"gid" "1904306376092568991"
"title" "Prince of Prolander Event "
"url" "http://store.steampowered.com/news/externalpost/tf2_blog/1904306376092568991"
"is_external_url" "1"
"author" ""
"contents" "<a href=/"http://rgl.gg/default.aspx/"><img src=/"https://steamcdn-a.akamaihd.net/steam/news/29555/prince.png?t=1495219023/"></a><br><br>
<p><b>This Sunday at 4:30pm EST</b> <a href=/"http://rgl.gg/default.aspx/" target=\"_blank\">RGL.gg</a> is hosting their Prince of Prolander event. See legendary players <a href=/"https://www.youtube.com/user/stabbyvideo/" target=\"_blank\">Stabby</a> and <a href=/"https://www.youtube.com/user/danethebrain/" target=\"_blank\">Uncle Dane</a> duke it out to answer the age old question: Who is better? Spies or Engies? Come see them settle the score once and for all in the new competitive TF2 format, Pick/Ban Prolander. Be sure to tune in to <a href=/"https://www.twitch.tv/extvesports/" target=\"_blank\">Twitch</a> this Sunday, and witness this historic event!</p><br>"
"feedlabel" "TF2 Blog"
"date" "1495218420"
"feedname" "tf2_blog"
"feed_type" "0"
"appid" "440"
}
}
"count" "2385"
}
Для парсингу результатів запиту слід використовувати гнучке рішення, оскільки кожен метод повертає результати в довільному порядку.
Коди стану HTTP
Веб-API Steamworks за можливості намагається повернути відповідні коди стану HTTP.
Найпоширеніші:
Код | Текст | Опис |
200 | OK (Гаразд) | Успіх! |
400 | Bad Request (Хибний запит) | Будь ласка, переконайтеся, що надіслано всі необхідні параметри. |
401 | Unauthorized (Доступ заборонено) | Відмовлено в доступі. Повторні спроби не допоможуть. Перевірте свій параметр key= . |
403 | Forbidden (Заборонено) | Відмовлено в доступі. Повторні спроби не допоможуть. Перевірте свій параметр key= . |
404 | Не знайдено | Запитаний API не існує. |
405 | Method Not Allowed (Заборонений метод) | У виклику використано хибний HTTP-метод, як-от GET чи PUSH. |
429 | Too Many Requests (Забагато запитів) | На вас накладено обмеження частоти. |
500 | Internal Server Error (Внутрішня помилка сервера) | Сталася невиправна помилка, будь ласка, спробуйте знову. Якщо продовжується, то напишіть в обговоренні розробників Steamworks із додатковими подробицями запиту. |
503 | Service Unavailable (Служба недоступна) | Служба тимчасово недоступна або надто зайнята для відповіді. Будь ласка, зачекайте і спробуйте знову пізніше. |