API:Data formats/uk

From MediaWiki.org

Jump to: navigation, search
Tools clipart.png Ця сторінка є частиною документації по MediaWiki API.
MediaWiki API


Contents

[edit] Вхідні дані

Найпростіший спосіб передавання даних для API — через параметри рядка запиту. Кожен модуль (і кожен підмодуль action=query) має власний набір параметрів. Про них можн дізнатися, якщо звернутися до API з параметром action=help, чи просто без параметрів (наприклад, http://www.mediawiki.org/w/api.php?action=help), або через action=paraminfo.

[edit] Багатозначні параметри

Деякі параметри можуть передавати багато значень. Ці значення слід відділяти між собою вертикальною рискою (|). Якщо параметр може приймати багато значень, про це явно вказується у action=paraminfo та action=help. Натомість у документації багатозначні параметри описуються, як правило, словами "Перелік того-то…".

[edit] Часові мітки

Параметрами приймаються часові мітки у декількох форматах:

  • uk:ISO 8601: 2008-08-23T18:05:46Z
  • власний формат MediaWiki: 20080823180546
  • формат MySQL: 2008-08-23 18:05:46
  • формат UNIX (число секунд від 1 січня, 1970)

Вивідні часові мітки є у форматі ISO 8601.

[edit] Дані на виході

MediaWiki API підтримує декілька стандартних форматів даних на виході (XML,JSON,YAML,...), а також кілька спеціальних (RSS, ...) для спеціальних модулів.

Крім спеціалізованих, усі модулі підтримують дані на виході у будь-якому стандартному форматі. Щоб спростити зневадження, всі стандартні формати мають свої варіанти у "красивому HTML", з наростком "fm". Звичаєво використовується формат "xmlfm".

Code Description Parameters
json JSON callback (необов'язково): обгортає вивід у виклик потрібної функції
php serialized PHP
wddx WDDX
xml XML
yaml YAML
rawfm JSON зі зневаджувальними елементами (HTML) callback (необов'язково): обгортає вивід у виклик потрібної функції
txt PHP print_r()
dbg PHP var_export()

[edit] Приклади

XML

<?xml version="1.0" encoding="utf-8"?>
<api>
  <query>
    <pages>
      <page pageid="736" ns="0" title="Albert Einstein" touched="2007-07-06T04:37:30Z" lastrevid="142335140" counter="4698" length="86906" />
    </pages>
  </query>
</api>

JSON

{
    "query": {
        "pages": {
            "736": {
                "pageid": 736,
                "ns": 0,
                "title": "Albert Einstein",
                "touched": "2007-07-06T04:37:30Z",
                "lastrevid": 142335140,
                "counter": 4698,
                "length": 86906
            }
        }
    }
}

YAML

---
query: 
  pages: 
    - 
      pageid: 736
      ns: 0
      title: Albert Einstein
      touched: |
        2008-03-16T04:59:39Z
      lastrevid: 198568286
      counter: 4698
      length: 81076

WDDX

<?xml version="1.0" encoding="utf-8"?>
<wddxPacket version="1.0">
  <header/>
  <data>
    <struct>
      <var name="query">
        <struct>
          <var name="pages">
            <struct>
              <var name="736">
                <struct>
                  <var name="pageid">
                    <number>736</number>
                  </var>
                  <var name="ns">
                    <number>0</number>
                  </var>
                  <var name="title">
                    <string>Albert Einstein</string>
                  </var>
                  <var name="touched">
                    <string>2007-07-06T04:37:30Z</string>
                  </var>
                  <var name="lastrevid">
                    <number>142335140</number>
                  </var>
                  <var name="counter">
                    <number>4698</number>
                  </var>
                  <var name="length">
                    <number>86906</number>
                  </var>
                </struct>
              </var>
            </struct>
          </var>
        </struct>
      </var>
    </struct>
  </data>
</wddxPacket>

PHP (додані переноси рядків для зручності. Використовуйте PHP-функцію unserialize(), щоб відновити дані.)

a:1:{s:5:"query";a:1:{s:5:"pages";a:1:{i:736;a:7:{s:6:"pageid";i:736;s:2:"ns";i:0;s:5:"title";s:15:"Albert Einstein";
s:7:"touched";s:20:"2007-07-06T04:37:30Z";s:9:"lastrevid";i:142335140;s:7:"counter";i:4698;s:6:"length";i:86906;}}}}

PHP (формат var_export. Використовуйте PHP-функцію eval(), щоб відновити дані.)

array (
  'query' => 
  array (
    'pages' => 
    array (
      736 => 
      array (
        'pageid' => 736,
        'ns' => 0,
        'title' => 'Albert Einstein',
        'touched' => '2008-10-11T20:27:04Z',
        'lastrevid' => 244636163,
        'counter' => 4698,
        'length' => 89641,
      ),
    ),
  ),
)