API:Abfrage
Diese Seite ist Teil der Dokumentation der MediaWiki action API. |
Mit dem action=query
können Sie Informationen über ein Wiki und die darin gespeicherten Daten abrufen, z. B. den Wikitext einer bestimmten Seite, die Links und Kategorien einer Seitengruppe oder den Token, den Sie zum Ändern des Wiki-Inhalts benötigen.
API-Dokumentation
Abfragemodule
Das Abfragemodul hat drei Typen von Submodulen (auch Abfragemodule genannt):
- Meta-Informationen über das Wiki und angemeldete Benutzer.
- Eigenschaften von Seiten, darunter Seitenversionen und Seiteninhalt.
- Listen von Seiten, die bestimmte Kriterien erfüllen.
Beispiele
Beispiel 1: Seiten angeben
Im Gegensatz zu Meta- und Abfrage-Modulen funktionieren alle Eigenschaften-Abfragemodule auf einem Satz von Seiten, der auf eine der folgenden Wege festgelegt werden kann:
- Nach Name mit dem
titles
-Parameter, z.B.titles=Foo|Bar|Main_Page
. - Nach Seiten-ID mit dem
pageids
-Parameter, z.B.pageids=123|456|75915
. - Nach Versions-ID mit dem
revids
-Parameter, z.B.revids=478198|54872|54894545
. Die meisten Abfragemodule werden die Versions-ID in die entsprechende Seiten-ID umwandeln. Nur prop=revisions nutzt derzeit die Versions-ID selbst. - Mit einem Generator.
GET-Anfrage
Antwort
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 1130,
"ns": 0,
"title": "Avicenna"
},
{
"pageid": 17412,
"ns": 0,
"title": "Klein bottle"
},
{
"pageid": 33642,
"ns": 0,
"title": "Warrant"
}
]
}
}
Beispiel 2: Titelnormalisierung
Titelnormalisierung wandelt Seitentitel in ihr kanonisches Format um.
Dies bedeutet, dass das erste Zeichen großgeschrieben wird, Unterstriche durch Leerzeichen ersetzt werden und Namensräume in die lokalisierte Form umgewandelt werden, die für das Wiki genutzt wird.
GET-Anfrage
Antwort
{
"batchcomplete": true,
"query": {
"normalized": [
{
"fromencoded": false,
"from": "Project:articleA",
"to": "Wikipedia:ArticleA"
},
{
"fromencoded": false,
"from": "article_B",
"to": "Article B"
}
],
"pages": [
{
"ns": 0,
"title": "Article B",
"missing": true
},
{
"ns": 4,
"title": "Wikipedia:ArticleA",
"missing": true
}
]
}
}
Beispiel 3: Fehlende und ungültige Titel
Titel, die nicht existieren oder ungültig sind, werden in der Antwort eines der Attribute missing
oder invalid
erhalten.
In Ausgabeformaten, die numerische Array-Schlüssel unterstützen, haben fehlende und ungültige Titel negative Seiten-IDs.
In manchen Fällen kann ein Titel von einen Benutzer, jedoch nicht von der API zugegriffen werden, wie Seiten, die den Inhalt eines anderen Wikis spiegeln.
Für diese Titel wird in der Antwort ein known
-Attribut festgelegt.
GET-Anfrage
Antwort
{
"batchcomplete": true,
"query": {
"pages": [
{
"ns": 0,
"title": "Doesntexist",
"missing": true
},
{
"title": "Talk:",
"invalidreason": "The requested page title is empty or contains only the name of a namespace.",
"invalid": true
},
{
"pageid": 15580374,
"ns": 0,
"title": "Main Page"
}
]
}
}
Beispiel 4: Fortsetzen von Abfragen
Wenn in der Antwort der Abfrage nicht alle Daten ausgegeben werden, gibt es ein continue
-Attribut, das angibt, dass es noch weitere Daten gibt.
GET-Anfrage
Antwort
{
"continue": {
"accontinue": "List_of_largest_companies_in_Sri_Lanka",
"continue": "-||"
},
"query": {
"allcategories": [
{
"category": "List of BioWare characters"
},
{
"category": "List of Harlequin Romance novels"
},
{
"category": "List of MPs elected in UK elections templates"
},
{
"category": "List of Metamorphoses characters"
},
{
"category": "List of Rockstar Games characters"
},
{
"category": "List of Star Trek awards and nominations"
},
{
"category": "List of Swedish films of the 2020s"
},
{
"category": "List of association football clubs in the Republic of Ireland templates"
},
{
"category": "List of awards and nominations received by Aleksej Pechkuroy"
},
{
"category": "List of cabinet templates"
}
]
}
}
Setze ihre Werte in die ursprüngliche Abfrage ein, um weitere Daten zu erhalten.
GET-Anfrage
Antwort
{
"batchcomplete": true,
"query": {
"allcategories": [
{
"category": "List of largest companies in Sri Lanka"
},
{
"category": "List of longest beaches of the world"
},
{
"category": "List of ministers by ministry of Bangladesh"
},
{
"category": "List of people from Palm Beach, Florida"
},
{
"category": "List of video game characters"
}
]
}
}
Beispiel 5: Batchcomplete
Die API gibt ein batchcomplete
-Element aus, um anzuzeigen, dass alle Daten für den aktuellen Stapel von Objekten ausgegeben wurden.
MW 1.25+
In die Antwort der Beispiel-Abfrage unten wurde batchcomplete
eingebunden, um anzuzeigen, dass alle Daten für jedes der drei Bilder ausgegeben wurden.
Die nächste Fortsetzung wird mit der Ausgabe der Daten für den nächsten Satz von drei Bildern beginnen.
GET-Anfrage
Antwort
{
"batchcomplete": true,
"continue": {
"aicontinue": "20020822143445|Do_You_Want_to_Know_a_Secret_(Beatles_song_-_sample).ogg",
"continue": "-||"
},
"query": {
"allimages": [
{
"name": "Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"timestamp": "2002-08-04T19:55:17Z",
"url": "https://upload.wikimedia.org/wikipedia/en/6/64/Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=67723",
"ns": 6,
"title": "File:Simon and Garfunkel - Mrs Robinson.ogg"
},
{
"name": "Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"timestamp": "2002-08-04T20:01:36Z",
"url": "https://upload.wikimedia.org/wikipedia/en/c/c1/Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=67779",
"ns": 6,
"title": "File:Simon and Garfunkel - Scarborough Fair.ogg"
},
{
"name": "Beatles_please_me.ogg",
"timestamp": "2002-08-22T14:34:00Z",
"url": "https://upload.wikimedia.org/wikipedia/en/e/ee/Beatles_please_me.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Beatles_please_me.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=74826",
"ns": 6,
"title": "File:Beatles please me.ogg"
}
]
}
}
Beispiel 6: Generatoren
Nutze Generatoren, wenn du Daten über einen Satz von Seiten erhalten möchtest.
Um beispielsweise Daten über Seiten in einer bestimmten Kategorie zu erhalten, frage nicht zuerst list=categorymembers
ab und dann nochmal mit pageids
bei allen ausgegebenen Seiten, sondern kombiniere die beiden API-Abfragen mithilfe von generator=categorymembers
.
Wenn du ein Listenmodul als Generator nutzt, musst du die Seiten nicht angeben.
Für ein Eigenschaftsmodul solltest du hingegen die Seiten angeben, die der Generator bearbeiten soll.
Nutze zum Beispiel generator=links&titles=Main%20Page
, um alle Seiten zu laden, die von der Hauptseite verlinkt sind.
Parameter, die an einen Generator übergeben werden, müssen mit einem Präfix g
versehen werden. Nutze bei generator=backlinks
beispielsweise gbllimit
statt bllimit
.
Die einfache Abfrage unten fragt Links und Kategorien für die ersten drei Seiten im Hauptnamensraum, die mit "Ba" beginnen ab.
GET-Anfrage
Antwort
{
"continue": {
"plcontinue": "14977970|0|Kirkwall_Ba_game",
"continue": "||categories"
},
"query": {
"pages": [
{
"pageid": 98178,
"ns": 0,
"title": "Ba",
"links": [
{
"ns": 0,
"title": "BA"
},
{
"ns": 4,
"title": "Wikipedia:Mainspace"
},
{
"ns": 4,
"title": "Wikipedia:Naming conventions (capitalization)"
},
{
"ns": 4,
"title": "Wikipedia:Protection policy"
},
{
"ns": 4,
"title": "Wikipedia:Redirect"
},
{
"ns": 10,
"title": "Template:R from miscapitalisation"
},
{
"ns": 10,
"title": "Template:R from modification"
},
{
"ns": 10,
"title": "Template:R to disambiguation page"
},
{
"ns": 14,
"title": "Category:Redirects from ambiguous terms"
},
{
"ns": 14,
"title": "Category:Redirects from other capitalisations"
}
],
"categories": [
{
"ns": 14,
"title": "Category:Redirects from ambiguous terms"
},
{
"ns": 14,
"title": "Category:Redirects from other capitalisations"
},
{
"ns": 14,
"title": "Category:Unprintworthy redirects"
}
]
},
{
"pageid": 14977970,
"ns": 0,
"title": "Ba'"
},
{
"pageid": 33351890,
"ns": 0,
"title": "Ba'Al Shem Tov"
}
]
}
}
Abfragen fortsetzen
Abfragen enthalten oft mehr Ergebnisse als in der ursprünglichen Abfrage angezeigt werden. (Often this is because a List query's result limit has been reached.) In diesen Fällen können die Abfragen fortgesetzt werden. Ausführlichere Informationen zur Fortsetzung von Abfragen befinden sich unter API:Continue .
Mögliche Warnungen
Warnmeldung | Ursache |
---|---|
Es wurde keine Unterstützung für Spezialseiten implementiert. | Wird ausgegeben, wenn ein Titel im Spezial- oder Media-Namensraum gegeben ist. Die Seiten in diesen Namensräumen können nicht abgefragt werden. |
Redirect resolution cannot be used together with the revids parameter. Any redirects the revids point to have not been resolved. | Wird ausgegeben, wenn der redirect -Parameter in einer Abfrage genutzt wird, die Seiten mit revids angibt.
|
Parametergeschichte
- v1.34:
exportschema
eingeführt - v1.24: Eingeführt
rawcontinue
(Anmerkung: raw continuation war das Standardverhalten bis v1.26) - v1.21: Eingeführt
continue
Zusätzliche Anmerkungen
- Die Angabe der Titel über
titles
oderpageids
ist auf 50 Titel je Abfrage oder 500 für Benutzer mit dem Rechtapihighlimits
begrenzt. - Nutze mehrere Abfragemodule zusammen, um in einer Abfrage zu erhalten, was du benötigst, z.B.
prop=info|revisions&list=backlinks|embeddedin|allimages&meta=userinfo
. - Generatoren übergeben immer Seitentitel an das Abfragemodul. Anders als Listen (die standardmäßig zusätzliche Daten enthalten können), sollten Generatoren selbst keine Informationen ausgeben, es sei denn, sie werden ausdrücklich über die Abfrageparameter des Generatormoduls angefordert.
Weiterleitungen auflösen
Weiterleitungen können automatisch aufgelöst werden, sodass das Ziel einer Weiterleitung statt des gegebenen Titels ausgegeben wird.
Wenn vorhanden, werden sie immer die Attribute from
und to
enthalten und können für Weiterleitungen, die auf bestimmte Abschnitte verweisen, das Attribut tofragment
enthalten.
Sowohl Normalisierung als auch Weiterleitung können stattfinden.
Im Fall mehrfacher Weiterleitungen werden alle Weiterleitungen aufgelöst und im Falle einer Weiterleitung im Kreis gibt es möglicherweise keine Seite im Abschnitt 'pages' (siehe auch unten).
Die Auflösung von Weiterleitungen kann nicht zusammen mit dem Parameter revids=
oder einem Generator, der Versions-IDs generiert, genutzt werden; dies zu tun wird eine Warnung auslösen und Weiterleitungen für die angegebenen Versions-IDs werden nicht aufgelöst.
Die Beispiele unten zeigen, wie der Parameter redirects
funktioniert.
Ergebnis |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Main page",
"to": "Main Page"
}
],
"pages": [
{
"pageid": 15580374,
"ns": 0,
"title": "Main Page"
}
]
}
}
|
Ergebnis |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 217225,
"ns": 0,
"title": "Main page"
}
]
}
}
|
Ergebnis |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 217225,
"ns": 0,
"title": "Main page",
"contentmodel": "wikitext",
"pagelanguage": "en",
"pagelanguagehtmlcode": "en",
"pagelanguagedir": "ltr",
"touched": "2017-12-17T02:02:05Z",
"lastrevid": 777924062,
"length": 170,
"redirect": true
}
]
}
}
|
Ergebnis |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Wikipedia:!--",
"to": "Wikipedia:Manual of Style",
"tofragment": "Invisible comments"
}
],
"pages": [
{
"pageid": 33697,
"ns": 4,
"title": "Wikipedia:Manual of Style"
}
]
}
}
|
Ergebnis |
---|
{
"batchcomplete": true,
"query": {
"normalized": [
{
"fromencoded": false,
"from": "page1",
"to": "Page1"
}
],
"redirects": [
{
"from": "Page1",
"to": "Page2"
},
{
"from": "Page2",
"to": "Page3"
},
{
"from": "Page3",
"to": "Page1"
}
],
"pages": [
{
"ns": 0,
"title": "Page1",
"missing": true
}
]
}
}
|
Siehe auch
- API:Hauptseite - Die Schnellstart-Anleitung.
- API:Raw query continue - Enthält Informationen zur Nutzung des Parameters
rawcontinue
.
- Gewartet von MediaWiki Interfaces Team.
- Echtzeit-Chat (IRC): #mediawiki-core connect
- Problem-Tracker: Phabricator MediaWiki-Action-API (Problem melden)