Technischer Wiki-Leitfaden/API

Aus EnzyklopAtys

Wechseln zu: Navigation, Suche
de:Technischer_Wiki-Leitfaden/API en:Wiki Technical Guide/API
 
UnderConstruction.png
Übersetzung zur Überprüfung
Gib nicht den Mitwirkenden die Schuld, sondern komm und hilf ihnen. 😎

Action API - Einführung

Quelle: https://www.mediawiki.org/wiki/API:Query/de

Mit dem action=query-Modul kannst Du Informationen über ein Wiki und die darin gespeicherten Daten abrufen, z. B. den Wikitext einer bestimmten Seite, die Links und Kategorien einer Reihe von Seiten oder das Token, das Du zum Ändern von Wiki-Inhalten benötigst.

Das Abfragemodul hat viele Untermodule (Abfragemodule genannt), die jeweils eine andere Funktion haben. Es gibt 3 Arten von Abfragemodulen:

  • Meta-Informationen über das Wiki und den angemeldeten Benutzer (z.B.: action=query&meta=submodule oder action=query&meta=submodule1|submodule2)
  • Eigenschaften von Seiten, einschließlich Seitenrevisionen und Inhalt (z.B.: action=query&titles=title1&prop=property1|property2)
  • Listen von Seiten, die bestimmten Kriterien entsprechen (die meisten Listenabfragen geben Listen standardmäßig 10 Elemente zurück, z. B.: action=query&list=list1|list2)
  • Du solltest mehrere Abfragemodule zusammen verwenden, um das Gewünschte in einer Anfrage zu erhalten, z. B. prop=info|revisions&list=backlinks|embeddedin|allimages&meta=userinfo ist ein Aufruf an sechs Module in einer Anfrage.

Alle Eigenschaftsabfragemodule arbeiten mit einer Reihe von Seiten, die Du entweder mit den Parametern titles, pageids, revids oder generator angibst. Fordere nicht jeweils eine Seite an - das ist sehr ineffizient und verbraucht viele zusätzliche Ressourcen und Bandbreite: Fordere Informationen über mehrere Seiten an, indem du ihre Titel oder ids mit dem Symbol '|' pipe kombinierst: titles=PageA|PageB|PageC.

Verwende den Generator, wenn du Daten über eine Gruppe von Seiten abrufen willst, die das Ergebnis eines anderen API-Aufrufs sind. Wenn du z. B. Daten über Seiten in einer bestimmten Kategorie abrufen willst, solltest du, anstatt list=categorymembers abzufragen und dann erneut mit pageids auf alle zurückgegebenen Seiten zu setzen, die beiden API-Aufrufe zu einem einzigen kombinieren, indem du generator=categorymembers anstelle des list-Parameters angibst.

Wenn du Wikimedia-Wikis abfragst und die Ergebnisse als format=json (oder php) anforderst, dann gib formatversion=2 an. Das ursprüngliche Ergebnisformat war auf XML ausgelegt; die neue Struktur ist einfacher zu verarbeiten (und standardmäßig auf utf8 eingestellt).

Action API - einfache Beispiele

http://de.wiki.ryzom.com/w/api.php?action=query&prop=revisions&rvprop=content&format=jsonfm&formatversion=2&titles=Main%20Page holt einfach das Wiki-Markup (Inhalt) einer Seite: holt (action=query) den Inhalt (rvprop=content) der letzten Revision der Hauptseite (titles=Main%20Page) in JSON mit Leerzeichen, um es leichter lesbar zu machen (format=jsonfm).

Mit API Sandbox: ex1: action=query&prop=categories&generator=allpages&gapfrom=User_Manual
FR API Sandbox

Action API - Festlegen von Seiten

  • Nach Name mit dem Parameter titles, z. B. titles=Foo|Bar|Main_Page
  • Nach der Seiten-ID unter Verwendung des pageids-Parameters, z. B. pageids=123|456|75915
  • Nach Revisions-ID unter Verwendung des revids-Parameters, z. B. revids=478198|54872|54894545
    • Die meisten Abfragemodule wandeln die Revisions-ID in die entsprechende Seiten-ID um. Nur prop=revisions verwendet tatsächlich die Revisions-ID selbst.
  • Verwendung eines Generators

Die Angabe von Titeln über den Abfrage-String (entweder über titles oder pageids) ist auf 50 Titel pro Abfrage begrenzt (oder 500 für diejenigen mit dem Recht apihighlimits, normalerweise Bots und Sysops).

https://www.mediawiki.org/wiki/API:FAQ/de

  • Wenn Du versuchst, Informationen über eine Seite zu erhalten, wirst Du wahrscheinlich ein prop= Submodul von action=query verwenden. Andere Abfrage-Submodule geben Listen von Seiten und Meta-Informationen über das Wiki zurück. Sieh Dir die generierte API-Hilfe für alle Abfrage-Submodule an.

Action API - Normalisierung von Titeln

konvertiert Seitentitel in ihre kanonische Form (Cap, ersetzt _ durch Leerzeichen und ändert den Namespace in die für dieses Wiki definierte lokalisierte Form). Die Normalisierung der Titel erfolgt automatisch, unabhängig davon, welche Abfragemodule verwendet werden. Nachfolgende Zeilenumbrüche in Seitentiteln (\n) verursachen jedoch ein merkwürdiges Verhalten und sollten zuerst entfernt werden.

Fehlende und ungültige Titel: erscheinen im <Seiten>-Abschnitt, haben aber das Attribut fehlend oder ungültig gesetzt. In Ausgabeformaten, die numerische Array-Schlüssel unterstützen (JSON und PHP serialisiert), werden fehlende und ungültige Titel eindeutige, negative Seiten-IDs haben. Abfragemodule werden fehlende oder ungültige Titel einfach ignorieren, da sie damit nichts Sinnvolles anfangen können. Die Titel in den Special: und Media: Namespaces können nicht abgefragt werden.

Auflösen von Weiterleitungen

Wenn die Seite eine Weiterleitung hat, die Attribute von und bis enthalten und ein Attribut bisFragment für die Weiterleitungen enthalten können, die auf bestimmte Abschnitte verweisen.

Weitergehende Fragen

Wenn mehr Daten vorhanden sind, die der Abfrage entsprechen, enthält das API-Ergebnis ein continue-Element. Wenn Du weitere Daten wünschst, füge deren Werte (im Beispiel continue=-|| und accontinue=List_of_19th_century_baseball_players) zur ursprünglichen Anfrage hinzu, um die nächste Gruppe von Ergebnissen zu erhalten. Fahre so lange fort, bis ein API-Ergebnis kein continue-Element enthält, was bedeutet, daß es keine weiteren Daten gibt, die der Abfrage entsprechen.

Abrufen einer Liste von Seiten-IDs

Wenn nicht das neue JSON-Format Version=2 verwendet wird, wird die Ergebnisseite in JSON als ein Objekt zurückgegeben, das durch die Seiten-ID verschlüsselt ist, was schwierig sein kann, in JavaScript richtig zu iterieren. Der Parameter indexpageids gibt diese Seiten-IDs als Array zur einfacheren Iteration zurück. Beachte, daß die Reihenfolge dieser Seiten-IDs nicht unbedingt mit der Reihenfolge der Eingabe übereinstimmt (entweder direkt oder über einen Generator)

https://de.wikipedia.org/w/api.php?action=query&titles=Main%20Page%7CFksdlfsdss%7CTalk:&indexpageids=&format=jsonfm

Export von Seiten

Wenn der Parameter export gesetzt ist, wird dem Ergebnis ein XML-Dump aller Seiten im <pages>-Element hinzugefügt - er liefert nur ein Ergebnis, wenn er mit angegebenen Titeln (Generator, titles, pageids oder revid) verwendet wird. Wenn der Parameter exportnowrap ebenfalls gesetzt ist, wird nur der XML-Dump (nicht in ein API-Ergebnis verpackt) zurückgegeben.

Generatoren: Verwenden Sie die Ausgabe einer Liste anstelle der Titel

Andere Abfragemodule behandeln die generierten Seiten so, als ob sie in einem Parameter angegeben wären. Es ist nur ein Generator erlaubt.

siehe Listen

Listen

https://www.mediawiki.org/wiki/API:Lists/de

Listen geben in der Regel Zusammenfassungen von Daten zurück, wie z. B. Seiten, die in einem Wiki gesammelt wurden, oder Links, die auf einer einzelnen Seite gesammelt wurden. Um eine Liste anzufordern, übergib dem list-Parameter Deines Query-Strings ein gültiges Listen-Submodul, wie z.B. allimages oder usercontribs.

Um die Listen-API zu verwenden, gib action=query&list=list1|list2 in der URL an.

Beispiel: list=allcategories https://www.mediawiki.org/wiki/API:Allcategories/de

Parameter

acfrom Die Kategorie, in der die Aufzählung beginnen soll. accontinue Wenn weitere Ergebnisse verfügbar sind, fahren Sie damit fort. acto Die Kategorie, bei der die Aufzählung beendet werden soll. acprefix Suche nach allen Kategorietiteln, die mit diesem Wert beginnen. acdir Richtung, in der sortiert werden soll. Einer der folgenden Werte: ascending, descending. Standard: ascending. acmin Es werden nur Kategorien mit mindestens so vielen Mitgliedern zurückgegeben. Typ: integer. acmax Es werden nur Kategorien mit höchstens so vielen Mitgliedern zurückgegeben. Typ: integer. aclimit Wie viele Kategorien zurückgegeben werden sollen. Nicht mehr als 500 (5.000 für Bots) erlaubt. Typ: integer oder max. Standard: 10 acprop Welche Eigenschaften zu erwerben:

  • size Fügt die Anzahl der Seiten in der Kategorie hinzu.
  • hidden Tag-Kategorien, die mit __HIDDENCAT__ versteckt werden. Werte (getrennt mit | oder alternativ): size, hidden Standard: (leer)

Beispiel:

Beispiele

Beispiel für die Auflistung von Seiten, die zu einer bestimmten Kategorie gehören list=categorymembers. https://www.mediawiki.org/wiki/API:Categorymembers/de

Links

https://www.mediawiki.org/wiki/API:FAQ/de