API:Datové formáty
| Tato stránka je součástí dokumentace k API Action MediaWiki. |
Vstup
API přijímá vstupní údaje prostřednictvím parametrů poskytnutých HTTP požadavkem ve formátu application/x-www-form-urlencoded nebo multipart/form-data.
(unlike REST API, the Action API currently does not support application/json input format.)
Každý modul a submodul má svou vlastní sadu parametrů, které jsou uvedeny v dokumentaci a v souboru action=help. Lze je také načíst pomocí funkce action=paraminfo.
Kódování
Veškerý vstup musí být platný UTF-8, ve formátu NFC. MediaWiki se pokusí převést jiné formáty, což může vést k chybě.
Vícehodnotové parametry
Parametry, které nabývají více hodnot, se obvykle odesílají oddělené svislou čárou (|), např. param=value1|value2.
Pokud hodnota sama o sobě obsahuje znak svislé čáry, použijte jako oddělovač U+001F (oddělovač jednotek) a před hodnotu uveďte předponu U+001F, např. param=%1Fvalue1%1Fvalue2.
Zda parametr přijímá více hodnot, je explicitně uvedeno v dokumentaci k jeho modulu.
Booleovské parametry
Pokud je v HTTP požadavku zadán booleovský parametr, je považován za pravdivý bez ohledu na svou hodnotu. V případě hodnoty nepravdivý parametr zcela vynechejte.
Nejlepší způsob, jak v HTTP požadavku zadat parametr s hodnotou true, je použít someParam=; koncový = zajišťuje, že prohlížeč nebo HTTP knihovna nezahodí „prázdný“ someParam.
Časová razítka
Parametry, které přijímají hodnoty časového razítka, akceptují více formátů časového razítka:
- Formát ISO 8601:
2008-08-23T18:05:46Z. - Formát interního časového razítka MediaWiki:
20080823180546. - Interní formát časového razítka MySQL:
2008-08-23 18:05:46. - Formát časového razítka v systému UNIX
1219514746(počet sekund od 1. ledna 1970).
Časová razítka jsou vždy výstupem ve formátu ISO 8601.
Výstup
Standardní a výchozí výstupní formát v MediaWiki je JSON. Všechny ostatní formáty se nedoporučují.
Výstupní formát by měl být vždy specifikován pomocí format=yourformat, kde yourformat je jedna z následujících hodnot:
json: Formát JSON. (doporučeno)php: Formát serializovaný v PHP. (zastaralé)xml: Formát XML. (zastaralé)txt: Formát PHP print_r(). (odstraněno od 1.27)dbg: Formát PHP var_export(). (odstraněno od 1.27)yaml: Formát YAML. (odstraněno od 1.27)wddx: Formát WDDX. (odstraněno od 1.26)dump: Formát PHP var_dump(). (odstraněno od 1.26)none: Vrátí prázdnou odpověď. 1.21+
Příklad
Odpověď
{
"query": {
"pages": {
"217225": {
"pageid": 217225,
"ns": 0,
"title": "Main page"
}
}
}
}
Pokud není uvedeno jinak, všechny moduly umožňují výstup dat ve všech generických formátech.
Pro zjednodušení ladění mají všechny generické formáty alternativy pro "přiměřený tisk v HTML" s příponou fm, např. jsonfm.
Parametry JSON
S format=json a format=jsonfm lze použít následující parametry:
utf8: Kóduje většinu (ale ne všechny) znaky mimo ASCII jako UTF-8 namísto jejich nahrazení hexadecimálními escape sekvencemi. Typ: boolean.ascii: Kóduje všechny znaky mimo ASCII pomocí hexadecimálních escape sekvencí. Typ: boolean.formatversion: Formátování výstupu. 1.25+1: Zpětně kompatibilní formát, používá klíče*pro uzly obsahu, kóduje znaky jiné než ASCII pomocí hexadecimálních escape sekvencí.2: Moderní formát. Vrací odpovědi v čistším formátu, kóduje většinu znaků mimo ASCII jako UTF-8. (doporučeno)
callback: Odpověď ve formátu JSON, zabalením výsledku do volání funkce JavaScript. Z bezpečnostních důvodů tyto odpovědi ignorují veškeré soubory cookie relace prohlížeče a odpovídají bez informací specifických pro aktuálně přihlášeného uživatele. To znamená, že následující funkce jsou z bezpečnostních důvodů deaktivovány:- Tokeny nelze získat, takže akce měnící stav nejsou možné.
- Klient je pro všechny účely považován za anonymního uživatele (tj. nepřihlášeného), a to i po přihlášení přes action=login. To znamená, že moduly, které vyžadují další práva, nebudou fungovat, pokud cílová wiki neumožní jejich používání anonymním uživatelům.
Další poznámky
- Výstupní formáty XML a PHP jsou zastaralé, ale stále se používají. Klienti napsaní v PHP by se měli vyvarovat používání formátu PHP, protože je v zásadě nejistý. Prozatím se udržuje pouze kvůli své popularitě.
- Existuje mnoho konverzních knihoven a online převodníků pro převod JSON odpovědí do jiných formátů – například JSON-CSV převádí na Comma-Separated Values.
- Moduly feedů, jako například Feed Recent Changes, přepíší standardní výstupní formát a místo něj použijí RSS nebo Atom, jak je specifikováno v jejich parametru
feedformat. V těchto případech se formát zadaný v parametruformatpoužije pouze v případě chyby.
Související odkazy
- API:Chyby a varování - obsahuje formáty varování a chyb.
- Spravováno MediaWiki Interfaces Team.
- Živý chat (IRC): #mediawiki-core připojit se
- Nástroj pro sledování problémů: Phabricator MediaWiki-Action-API (nahlášení problému)