API:Suppression
Cette page fait partie de la documentation de l'API MediaWiki Action. |
Requête POST pour supprimer une page. Les pages peuvent être restaurées avec la méthode API:Undelete .
Version de MediaWiki : | ≥ 1.12 |
Documentation de l'API
Exemple
Le processus possède quatre étapes:
- Récupérer le jeton de connexion de API:Tokens .
- Envoyer une requête POST avec le jeton de connexion récupéré et les informations utilisateur à l'API.
- Récupérer un jeton CSRF une fois connecté.
- Envoyer une requête POST pour supprimer une page avec le jeton CSRF récupéré.
Requête POST
Réponse
{
"delete": {
"title": "page name",
"reason": "content was: 'Test' and the only contributor was Username",
"logid": 1234567
}
}
Exemple de code
Python
#!/usr/bin/python3
"""
delete.py
MediaWiki API Demos
Demo of `Delete` module: post request to delete a page
MIT license
"""
import requests
S = requests.Session()
URL = "https://test.wikipedia.org/w/api.php"
# Step1: Retrieve login token
PARAMS_0 = {
'action':"query",
'meta':"tokens",
'type':"login",
'format':"json"
}
R = S.get(url=URL, params=PARAMS_0)
DATA = R.json()
LOGIN_TOKEN = DATA['query']['tokens']['logintoken']
# Step2: Send a post request to login. Use of main account for login is not
# supported. Obtain credentials via Special:BotPasswords
# (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
PARAMS_1 = {
'action':"login",
'lgname':"your_bot_username",
'lgpassword':"your_bot_password",
'lgtoken':LOGIN_TOKEN,
'format':"json"
}
R = S.post(URL, data=PARAMS_1)
# Step 3: When logged in, retrieve a CSRF token
PARAMS_2 = {
'action':"query",
'meta':"tokens",
'format':"json"
}
R = S.get(url=URL, params=PARAMS_2)
DATA = R.json()
CSRF_TOKEN = DATA['query']['tokens']['csrftoken']
# Step 4: Send a post request to delete a page
PARAMS_3 = {
'action':"delete",
'title':"enter_a_page_title",
'token':CSRF_TOKEN,
'format':"json",
'reason':'the reason for deletion'
}
R = S.post(URL, data=PARAMS_3)
DATA = R.json()
print(DATA)
PHP
<?php
/*
delete.php
MediaWiki API Demos
Demo of `Delete` module: post request to delete a page
MIT license
*/
$endPoint = "http://dev.wiki.local.wmftest.net:8080/w/api.php";
$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$csrf_Token = getCSRFToken(); // Step 3
delete( $csrf_Token ); // Step 4
// Step 1: GET request to fetch login token
function getLoginToken() {
global $endPoint;
$params1 = [
"action" => "query",
"meta" => "tokens",
"type" => "login",
"format" => "json"
];
$url = $endPoint . "?" . http_build_query( $params1 );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
$result = json_decode( $output, true );
return $result["query"]["tokens"]["logintoken"];
}
// Step 2: POST request to log in. Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest( $logintoken ) {
global $endPoint;
$params2 = [
"action" => "login",
"lgname" => "bot_user_name",
"lgpassword" => "bot_password",
"lgtoken" => $logintoken,
"format" => "json"
];
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $endPoint );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
}
// Step 3: GET request to fetch CSRF token
function getCSRFToken() {
global $endPoint;
$params3 = [
"action" => "query",
"meta" => "tokens",
"format" => "json"
];
$url = $endPoint . "?" . http_build_query( $params3 );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
$result = json_decode( $output, true );
return $result["query"]["tokens"]["csrftoken"];
}
// Step 4: POST request to delete a page
function delete( $csrftoken ) {
global $endPoint;
$params4 = [
"action" => "delete",
"title" => "Sandbox",
"token" => $csrftoken,
"format" => "json"
];
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $endPoint );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params4 ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
echo ( $output );
}
JavaScript
/*
delete.js
MediaWiki API Demos
Demo of `Delete` module: post request to delete a page
MIT license
*/
var request = require('request').defaults({jar: true}),
url = "http://dev.wiki.local.wmftest.net:8080/w/api.php";
// Step 1: GET request to fetch login token
function getLoginToken() {
var params_0 = {
action: "query",
meta: "tokens",
type: "login",
format: "json"
};
request.get({ url: url, qs: params_0 }, function (error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
loginRequest(data.query.tokens.logintoken);
});
}
// Step 2: POST request to log in.
// Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest(login_token) {
var params_1 = {
action: "login",
lgname: "bot_username",
lgpassword: "bot_password",
lgtoken: login_token,
format: "json"
};
request.post({ url: url, form: params_1 }, function (error, res, body) {
if (error) {
return;
}
getCsrfToken();
});
}
// Step 3: GET request to fetch CSRF token
function getCsrfToken() {
var params_2 = {
action: "query",
meta: "tokens",
format: "json"
};
request.get({ url: url, qs: params_2 }, function(error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
delete_page(data.query.tokens.csrftoken);
});
}
// Step 4: POST request to delete a page
function delete_page(csrf_token) {
var params_3 = {
action: "delete",
title: "Test",
token: csrf_token,
format: "json"
};
request.post({ url: url, form: params_3 }, function (error, res, body) {
if (error) {
return;
}
console.log(body);
});
}
// Start From Step 1
getLoginToken();
MediaWiki JS
/*
delete.js
MediaWiki API Demos
Demo of `Delete` module: post request to delete a page
MIT License
*/
var params = {
action: 'delete',
title: 'enter_a_page_title',
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
Erreurs possibles
Code | Info |
---|---|
missingtitle | La page que vous avez spécifiée n’existe pas. |
notoken | Le paramètre token doit être défini. |
badtoken | Jeton CSRF non valide. |
permissiondenied | Vous n’avez pas la permission de supprimer cette page. Sur la plupart des wikis, la suppression de pages est réservée aux administrateurs, mais d'autres wikis peuvent avoir des règles différentes.
|
cantdelete | Impossible de supprimer la page ou le fichier « title ».
La suppression a peut-être déjà été effectuée par quelqu’un d’autre. |
Historique des paramètres
- v1.38:
deletetalk
ajouté - v1.27:
tags
ajouté - v1.17:
watch
,unwatch
obsolète - v1.14:
pageid
ajouté - v1.13:
watch
,oldimage
,unwatch
ajouté
Notes additionnelles
- Pour les versions plus anciennes de Mediawiki, vous pouvez utiliser API:Tokens (action) ou API:Info/fr pour obtenir un jeton de modification à la place du jeton de connexion.
- En exécutant les extraits de code fournis sur cette page, n'oubliez pas d'utiliser
https://test.wikipedia.org/w/api.php
comme point de terminaison, pour ne pas détruire accidentellement des pages sur les wikis de production. - En plus du droit
delete
, d'autres droits peuvent être nécessaires, en fonction de la localisation et du type de page.
Par exemple, pour supprimer une page .css
d'un utilisateur, il faut également avoir le droit editusercss
.
Voir aussi
- API:Undelete - Restitue une page.