API:Extensions/de

API-Module in Erweiterungen erstellen
Erweiterungen können auch API-Module hinzufügen. Erstellen Sie eine neue Klasse, die ApiBase erbt (für ein top-level Modul), ApiQueryBase (für ein nicht-erzeugendes Untermodul von action=query) oder ApiQueryGeneratorBase (für ein Untermodul von action=query mit Erzeugerfunktionalität) und implementieren Sie die Methoden execute, getAllowedParams, getParamDescription, getDescription und getVersion.

Ein Generator-Modul ist ein wenig etwas wie [w:de:Pipe_(Informatik) UNIX-"Piping"], wobei die Ausgabe eines Moduls die Eingabe eines anderen ist. Zum Beispiel: Sie können nach einer Liste aller Seiten mittels  fragen, und Sie können Bilder auf bestimmten Seiten (durch Angabe der Seitentitel) mit   aufzählen. kann auch als ein Generator handeln, so kann man es "pipe" zu. Gemäß der Konvention, wenn ein Modul als Generator seiner Parameter wirkt, oft die gleichen wie in den regulären Modus, sind vorangestellt mit ' '. So generiert api.php?action=query&generator=allpages&gaplimit=8&prop=images&imlimit=15 eine Liste von den ersten 8 Wikiseiten, und zeigt von ihnen bis zu 12 Bilder in der Gesamtmenge an. Generator-Module müssen auch zu executeGenerator implementiert werden.

Wenn Sie Ihre neue Klasse erstellt haben, müssen Sie es mit der API registrieren, indem Sie es zu $wgAPIModules hinzufügen (Top-Level-Module, ausgewählt mit action=), $wgAPIPropModules (prop= Module), $wgAPIMetaModules (meta = Module) oder $wgAPIListModules (list= Module), wie dies:

Es ist möglich Core-Module zu überschreiben.

Kernmodule erweitern
Seit MediaWiki 1.14 ist es möglich, die Funktionalität von Kernmodulen zu erweitern, durch verwenden folgender Haken (hooks):


 * APIGetAllowedParams um die Modulparameterliste hinzuzufügen oder zu ändern
 * APIGetParamDescription um die Modulparameterliste hinzuzufügen oder die Parameterbeschreibungen zu ändern
 * APIAfterExecute um etwas zu tun, nachdem das Modul ausgeführt wurde (aber bevor das Ergebnis ausgegeben wurde)
 * Benutzen Sie APIQueryAfterExecute für,   und   Module
 * Wenn das Modul im Generator-Modus läuft, wird stattdessen APIQueryGeneratorAfterExecute aufgerufen werden

Liste von Erweiterungen mit API-Funktionalität
Siehe API Erweiterungen für Beispiele von Erweiterungen die hinzugefügt oder zur API erweitern.

Zwischenspeicherung
Standardmäßig verlässt ApiMain Caching von API-Aufrufen zum Angerufenen ('Cache-Control: private')! Um dieses Verhalten für hohe Volumenanfragen zu ändern, fügen Sie folgendes irgendwo in Ihrer execute-Methode:

Wiederkehrende Fehler
Einige Fehler werden automatisch erzeugt, wenn verschiedene Konditionen die Sie einrichteten, nicht erfüllt sind; zum Beispiel, wenn der Benutzer daran scheitert einen Titel anzugeben, dann wird der "missingparam" Fehler ausgelöst, wenn Sie getAllowedParams wie folgt eingestellt haben:

Manchmal sind die Arten von Fehlerbedingungen, eingerichtet von den gelieferten Methoden von ApiBase nicht ausreichend, und Sie müssen Ihre eigenen Bedingungen einrichten. Zum Beispiel, wenn Sie den Client verwenden, interwiki Links (zB Diskussion: MediaWiki) verhindern wollte, wie Titel, können Sie verwenden:

Zum Beispiel wenn man den Client hindern will, Interwikilinks zu nutzen (z.B. MediaWiki) als Titel, verwenden Sie:

Das würde den Fehler definiert in messageMap werfen. Siehe Dokumentation für ApiBase::dieUsage, ApiBase::dieUsageMsg, and ApiBase::getPossibleErrors. Ein Beispiel dafür, wie dies geschehen ist, siehe ApiEditPage::getPossibleErrors.

Rückkehrende Resultate
Siehe das Beispiel auf Manual:ApiResult.php (engl.).

Beispiel API-Erweiterung
Siehe auch API:Implementation_Strategy (engl.).

Dies ist eine Beispiel API-Erweiterung die erhält  (d.h. ein Emoticon) als einen Parameter und gibt verschiedene Daten aus (nämlich Antwort-Emoticons und Voraussagen in Antwort. Zum Beispiel:

um zu generieren:

Um es zu installieren erfordert es die üblichen Verfahren, d.h. kopieren Sie die folgenden drei Dateien in $IP/extensions/SampleApiExtension und fügen es ans Ende der LocalSettings.php: