API:Query
Deze pagina maakt deel uit van de MediaWiki Action API documentatie. |
Met de module action=query
kunt u informatie ophalen over een wiki en de gegevens die erin zijn opgeslagen, zoals de wikitekst van een bepaalde pagina, de links en categorieën van een reeks pagina's, of het token dat u nodig hebt om wiki-inhoud te wijzigen .
API documentatie
Query modules
De querymodule heeft drie typen submodules (ook wel querymodules genoemd):
- Meta informatie over de wiki en de ingelogde gebruiker.
̽* Eigenschappen van pagina's, inclusief revisies en inhoud.
- Lijsten met pagina's die aan een bepaald criteria voldoen.
Voorbeelden
Voorbeeld 1: Pagina's specificeren
In tegenstelling tot meta- en lijstquerymodules werken alle eigenschapsquerymodules op een set pagina's die op een van de volgende manieren kunnen worden opgegeven:
- Op naam met behulp van de parameter
titles
, bijvoorbeeldtitles=Foo|Bar|Main_Page
. - Op pagina-ID met behulp van de parameter
pageids
, bijvoorbeeldpageids=123|456|75915
. - Door revisie-ID met behulp van de parameter
revids
, bijvoorbeeldrevids=478198|54872|54894545
. De meeste querymodules converteren revisie-id naar de bijbehorende pagina-id. Slechts prop=revisions gebruikt daadwerkelijk de revisie-ID. - Een generator gebruiken.
GET request
Response
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 1130,
"ns": 0,
"title": "Avicenna"
},
{
"pageid": 17412,
"ns": 0,
"title": "Klein bottle"
},
{
"pageid": 33642,
"ns": 0,
"title": "Warrant"
}
]
}
}
Voorbeeld 2: Titel normaliseren
Titel normalisatie converteert pagina-titels naar de canonieke vorm.
Dit betekent het eerste teken met een hoofdletter schrijven, onderstrepingstekens vervangen door spaties en namespace wijzigen in de gelokaliseerde vorm die voor die wiki is gedefinieerd.
GET request
Response
{
"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
}
]
}
}
Voorbeeld 3: Ontbrekende en ongeldige titels
Voor titels die niet bestaan of ongeldig zijn, is een kenmerk van missing
of invalid
ingesteld in de response.
In uitvoerformaten die numerieke matrixsleutels ondersteunen, zullen ontbrekende of ongeldige titels negatieve pagina-id's krijgen.
In sommige gevallen kan een titel worden bekeken door een gebruiker, maar niet worden geopend door de API, zoals pagina's die de inhoud van een andere wiki ophalen.
Deze titels hebben een attribuut known
ingesteld in het antwoord.
GET request
Response
{
"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"
}
]
}
}
Voorbeeld 4: Vervolg queries
Wanneer niet alle gegevens worden geretourneerd in het antwoord op een query, is er een kenmerk van continue
om aan te geven dat er meer gegevens zijn.
GET request
Response
{
"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"
}
]
}
}
Als u meer gegevens wilt ophalen, voegt u de waarden toe aan de oorspronkelijke aanvraag:
GET request
Response
{
"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"
}
]
}
}
Voorbeeld 5: Batchcomplete
De API retourneert een element batchcomplete
om aan te geven dat alle gegevens voor de aanvraag zijn geretourneerd.
MW 1.25+
In het antwoord op de onderstaande voorbeeldquery is batchcomplete
opgenomen om aan te geven dat alle gegevens voor elk van de drie afbeeldingen zijn geretourneerd.
De volgende voortzetting begint met het retourneren van gegevens voor de volgende set van 3 afbeeldingen.
GET request
Response
{
"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"
}
]
}
}
Voorbeeld 6: Generatoren
Gebruik generatoren als u gegevens over een reeks pagina's wilt ophalen.
Als u bijvoorbeeld gegevens wilt ophalen over pagina's in een bepaalde categorie, combineert u de twee API-aanroepen in plaats van list=categorymembers
uit te voeren en vervolgens opnieuw query's uit te voeren met pageids
ingesteld op alle geretourneerde pagina's, in één door generator=categorymembers
te gebruiken.
Wanneer u een lijstmodule als generator gebruikt, hoeft u de pagina's niet op te geven.
Voor een eigenschapsmodule moet u echter de pagina's specificeren waarop de generator zal werken.
Als u bijvoorbeeld alle pagina's wilt laden waarnaar vanaf de hoofdpagina is gelinkt, gebruikt u generator=links&titles=Main%20Page
.
Parameters die aan een generator worden doorgegeven, moeten worden voorafgegaan door een g
. Bij gebruik van generator=backlinks
, wordt het dan gbllimit
in plaats van bllimit
.
De onderstaande voorbeeldquery krijgt links en categorieën voor de eerste drie pagina's in de main namespace die begint met "Ba".
GET request
Response
{
"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"
}
]
}
}
Vervolg queries
Op zoekopdrachten zijn vaak meer resultaten beschikbaar dan in de oorspronkelijke vraag worden getoond. (Often this is because a List query's result limit has been reached.) In deze gevallen kunnen queries worden voortgezet. Meer informatie hierover staat bij API:Continue/nl .
Mogelijke waarschuwingen
Waarschuwing | Oorzaak |
---|---|
Er is geen ondersteuning voor speciale pagina's geïmplementeerd. | Treedt op een titel in de Special: of Media: namespace wordt gegeven. Deze pagina's kunnen niet worden opgevraagd. |
Bij gebruik van de parameter revids is het niet mogelijk doorverwijzingen te volgen. Eventuele doorverwijzingen waarnaar revids verwijst zijn niet gevolgd. | Gegenereerd als de parameter redirect wordt gebruikt in een query die pagina's opgeeft met revids .
|
Parameter geschiedenis
- v1.34: Geïntroduceerd
exportschema
- v1.24: Geïntroduceerd
rawcontinue
(NB: Ruwe voortzetting was het standaardgedrag tot v1.26) - v1.21: Geïntroduceerd
continue
Aanvullende opmerkingen
- Het opgeven van titels via
titles
ofpageids
is beperkt tot 50 titels per zoekopdracht of 500 voor degenen met het rechtapihighlimits
. - Gebruik meerdere querymodules samen om in één verzoek te krijgen wat u nodig hebt, bijvoorbeeld
prop=info|revisions&list=backlinks|embeddedin|allimages&meta=userinfo
. - Generators geven altijd pagina-titels door aan de zoekmodule. In tegenstelling tot lijsten (die standaard aanvullende gegevens kunnen bevatten), moeten generators geen informatie zelf uitvoeren, tenzij dit expliciet wordt gevraagd via de parameters van de zoekmodule.
Doorverwijzingen oplossen
Doorverwijzingen automatisch worden opgelost, zodat het doel van een doorverwijzing wordt geretourneerd in plaats van de opgegeven titel.
Wanneer ze aanwezig zijn, bevatten ze altijd from
en to
attributen en mogelijk een tofragment
attribuut voor die doorverwijzingen die naar specifieke secties verwijzen.
Er kan zowel normalisatie als doorverwijzing plaatsvinden.
In het geval van meerdere doorverwijzingen worden die doorlopen, in het geval van een circulaire doorverwijzing is er mogelijk geen pagina in het gedeelte 'pagina's' (zie verzoek voorbeeld).
Doorverwijzing resolutie kan niet worden gebruikt in combinatie met de parameter revids=
of met een generator die revids genereert; Als u dat doet, wordt een waarschuwing weergegeven en worden doorverwijzingen voor de opgegeven revids niet opgelost.
De onderstaande voorbeelden laten zien hoe de parameter redirects
werkt.
Resultaat |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Main page",
"to": "Main Page"
}
],
"pages": [
{
"pageid": 15580374,
"ns": 0,
"title": "Main Page"
}
]
}
}
|
Resultaat |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 217225,
"ns": 0,
"title": "Main page"
}
]
}
}
|
Resultaat |
---|
{
"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
}
]
}
}
|
Resultaat |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Wikipedia:!--",
"to": "Wikipedia:Manual of Style",
"tofragment": "Invisible comments"
}
],
"pages": [
{
"pageid": 33697,
"ns": 4,
"title": "Wikipedia:Manual of Style"
}
]
}
}
|
Resultaat |
---|
{
"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
}
]
}
}
|
Zie ook
- API:Hoofdpagina - Snelstartgids
- API:Raw query continue - Bevat informatie over het gebruik van de parameter
rawcontinue
.
- Onderhouden door MediaWiki Interfaces Team.
- Live chat (IRC): #mediawiki-core verbinden
- Issue tracker: Phabricator MediaWiki-Action-API (Een bug melden)