API:Query
Cette page fait partie de la documentation de l'API MediaWiki Action. |
Le module action=query
vous permet de récupérer l'information concernant un wiki et les données qu'il contient telles que le wikicode d'un page donnée, les liens et les catégories d'un ensemble de pages, ou le jeton dont vous avez besoin pour modifier le contenu du wiki .
Documentation de l'API
Modules du Query
Le module de requête possède trois types de sous-modules (appelés également modules de requête) :
- Les informations meta concernant le wiki et l'utilisateur connecté.
- les propriétés des pages, incluant les révisions des pages et le contenu.
- Les listes des pages correspondant à certains critères.
Exemples
Exemple 1: spécifier des pages
A la différence des modules de requête des données meta et des listes, tous les modules de requête de propriété fonctionnent avec une liste de pages que l'on peut spécifier avec l'une des manières suivantes :
- Par le nom, en utilisant le paramètre
titles
; par exempletitles=Foo|Bar|Main_Page
. - Par l'ID de la page, en utilisant le paramètre
pageids
; par exemplepageids=123|456|75915
. - Par l'ID de révision, en utilisant le paramètre
revids
; par exemplerevids=478198|54872|54894545
. La plupart des modules de requête convertissent l'ID de révision en ID de la page correspondante. Seul prop=revisions utilise actuellement directement l'ID de révision. - En utilisant un générateur.
Requête GET
Réponse
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 1130,
"ns": 0,
"title": "Avicenna"
},
{
"pageid": 17412,
"ns": 0,
"title": "Klein bottle"
},
{
"pageid": 33642,
"ns": 0,
"title": "Warrant"
}
]
}
}
Exemple 2: normalisation du titre
La normalisation des titres transforme le titre des page en leur forme canonique.
Cela veut dire qu'elle met en majuscule le premier caractère du titre, remplace les caractères souligné '_' par des espaces, et traduit le nom de l'espace de noms en sa forme locale, telle qu'elle a été définie pour ce wiki.
Requête GET
Réponse
{
"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
}
]
}
}
Exemple 3: titres absents et invalides
Les titres qui n'existent pas, ou qui ne sont pas valides, auront un attribut missing
ou invalid
positionné dans la réponse.
Dans les formats de sortie qui prennent en charge les clés numériques de tableaux, les titres absents ou non valides auront des ID de page négatifs.
Dans certains cas, il est possible qu'un titre soit vu d'un utilisateur et ne soit pas accessible par l'API, comme les pages miroir qui dupliquent le contenu d'un autre wiki.
Ces titres auront un attribut known
présent dans la réponse.
Requête GET
Réponse
{
"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"
}
]
}
}
Exemple 4: requêtes continues
Lorsque toutes les données ne tiennent pas dans une seule réponse de requête, il y aura un attibut continue
pour indiquer que d'autres données vont encore arriver.
Requête GET
Réponse
{
"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"
}
]
}
}
Pour obtenir ces données supplémentaires, ajoutez leur valeurs dans la requête initiale.
Requête GET
Réponse
{
"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"
}
]
}
}
Exemple 5: fin de traitement par lot
L'API retourne un élément batchcomplete
pour indiquer que toutes les données pour le lot courant d'éléments, ont été fournies.
MW 1.25+
Dans la réponse de l'exemple de requête ci-dessous, batchcomplete
a été inclus pour indiquer que toutes les données de chacune des trois images ont été envoyées.
On continue ensuite en renvoyant les données concernant l'ensemble suivant de 3 images.
Requête GET
Réponse
{
"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"
}
]
}
}
Exemple 6: les générateurs
Utilisez les générateurs si vous voulez obtenir les informations concernant un ensemble de pages.
Par exemple, pour obtenir les données concernant les pages d'une certaine catégorie, au lieu de faire la requête list=categorymembers
, puis redemander avec pageids
initialisé sur toutes les pages retournées, combinez les deux appels à l'API en un seul avec generator=categorymembers
.
Lorsque vous spécifiez un module de liste comme générateur, vous n'avez pas besoin de préciser les pages.
Néanmoins, pour un module de propriétés, vous devez préciser les pages sur lesquelles le générateur va travailler.
Par exemple, pour charger toutes les pages appelées par la page principale, utilisez generator=links&titles=Main%20Page
.
Les paramètres passés à un générateur doivent être préfixés avec le caractère g
. Par exemple, lors de l'utilisation de generator=backlinks
, utilisez gbllimit
au lieu de bllimit
.
L'exemple de requête ci-dessous récupère les liens et les catégories des trois premières pages commençant par « Ba », dans l'espace de noms principal.
Requête GET
Réponse
{
"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"
}
]
}
}
Continuer les requêtes
Les requêtes auront souvent plus de résultats disponibles que ceux montrés dans la requête originale. (Often this is because a List query's result limit has been reached.) Dans ces cas, les demandes peuvent être poursuivies. Vous trouverez des informations plus détaillées sur la poursuite des requêtes sur API:Continue .
Avertissements possibles
Message d'avertissement | Raison |
---|---|
Aucune prise en charge des pages spéciales n'a été implémentée. | Apparaît lorsque vous donnez un titre appartenant aux espaces de noms Special: ou Media: . Les pages de ces espaces ne peuvent pas être interrogées. |
La résolution de la redirection ne peut pas être utilisée avec le paramètre revids. Toutes les redirections vers lesquelles pointent revids n’ont pas été résolues. | Apparaît si le paramètre redirect est utilisé dans une requête qui spécifie des pages en utilisant revids .
|
Historique des paramètres
- v1.34: ajouté
exportschema
- v1.24: ajouté
rawcontinue
(note : raw continuation était le comportement par défault jusqu'à la v1.26) - v1.21: ajouté
continue
Notes supplémentaires
- Concernant le nombre maximum de titres par requête, la limite est de 50 lorsque vous spécifiez les titres par
titles
oupageids
, et de 500 pour ceux qui ont les droitsapihighlimits
. - Vous pouvez combiner ensemble dans une seule requête, plusieurs modules pour obtenir ce que vous voulez; par exemple
prop=info|revisions&list=backlinks|embeddedin|allimages&meta=userinfo
. - Les générateurs passent toujours les titres des pages au module de requête. Contrairement aux listes (qui peuvent inclure des données supplémentaires par défaut), les générateurs ne doivent pas produire d'informations eux-mêmes, sauf si elles sont explicitement demandées via les paramètres de requête du module générateur.
Résoudre les redirections
Les redirections peuvent être résolues automatiquement, de sorte que la cible d'une redirection est renvoyée à la place du titre donné.
Lorsqu'ils sont présents, ils vont toujours contenir les attributs from
et to
et éventuellement un attribut tofragment
pour les redirections qui pointent vers des sections spécifiques.
La normalisation et la redirections peuvent s'appliquer en même temps.
En cas de redirections multiples, toutes les redirections seront parcourues, et si elles bouclent sur elles-mêmes, la section 'pages' pourrait ne pas inclure ces pages (voir un example).
La résolution des redirections ne peut pas être utilisée en combinaison avec le paramètre revids=
ou avec un générateur fournissant des identifiants de révision; en faisant cela vous allez produire un avertissement et ne résoudrez pas les redirections pour les identifiants spécifiés.
Les exemples ci-dessous montrent comment fonctionne le paramètre redirects
.
Résultat |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Main page",
"to": "Main Page"
}
],
"pages": [
{
"pageid": 15580374,
"ns": 0,
"title": "Main Page"
}
]
}
}
|
Résultat |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 217225,
"ns": 0,
"title": "Main page"
}
]
}
}
|
Résultat |
---|
{
"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
}
]
}
}
|
Résultat |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Wikipedia:!--",
"to": "Wikipedia:Manual of Style",
"tofragment": "Invisible comments"
}
],
"pages": [
{
"pageid": 33697,
"ns": 4,
"title": "Wikipedia:Manual of Style"
}
]
}
}
|
Résultat |
---|
{
"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
}
]
}
}
|
Voir aussi
- API:Page d'accueil - Guide de démarrage rapide.
- API:Raw query continue - Contient des informations sur l'utilisation du paramètre
rawcontinue
.
- Maintenu par MediaWiki Interfaces Team.
- Discussion en direct (IRC): #mediawiki-core connecter
- Suivi des problèmes : Phabricator MediaWiki-Action-API (rapporter un problème)