API:Delete
Outdated translations are marked like this.
Bu sayfa MediaWiki Eylem API'si belgelerinin bir parçasıdır. |
Bir sayfayı silmek için POST isteği. Pages can be undeleted with the API:Undelete method.
MediaWiki sürümü: | ≥ 1.12 |
API belgesi
Örnek
Sürecin dört adımı vardır:
- Giriş anahtarı API:Tokens üzerinden getirin.
- API'ye getirilen giriş anahtarını ve kullanıcı bilgilerini içeren bir POST isteği gönderin.
- Oturum açtığınızda bir CSRF anahtarı alın.
- Getirilen CSRF anahtarına sahip bir sayfayı silmek için bir POST isteği gönderin.
POST isteği
Yanıt
{
"delete": {
"title": "page name",
"reason": "content was: 'Test' and the only contributor was Username",
"logid": 1234567
}
}
Örnek kod
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 );
} );
Olası hatalar
Kod | Bilgi |
---|---|
missingtitle | Belirttiğiniz sayfa mevcut değil. |
notoken | token parametresi ayarlanmalıdır. |
badtoken | Geçersiz CSRF anahtarı. |
permissiondenied | bu sayfayı sil izniniz yok. Çoğu vikide, sayfaları silmek hizmetlileri ile sınırlıdır, ancak diğer vikilerin farklı kuralları olabilir.
|
cantdelete | "title" adlı sayfa veya dosya silinemedi.
Başka bir kullanıcı tarafından daha önce silinmiş olabilir. |
Parametre geçmişi
- v1.38: Introduced
deletetalk
- v1.27:
tags
tanıtıldı - v1.17:
watch
,unwatch
kullanımdan kaldırıldı - v1.14:
pageid
tanıtıldı - v1.13:
watch
,oldimage
,unwatch
tanıtıldı
Ek notlar
- MediaWiki'nin eski sürümlerinde, giriş anahtarı yerine bir düzenleme anahtarı almak için API:Tokens (eylem) veya API:Info kullanabilirsiniz.
- Bu sayfada sağlanan kod parçacıklarını yürütürken, bitiş noktası olarak
https://test.wikipedia.org/w/api.php
kullanmayı unutmayın, böylece üretim vikilerindeki sayfaları yanlışlıkla silmeyin. delete
hakkına ek olarak, sayfanın konumuna ve türüne bağlı olarak başka haklar da gerekebilir.
Örneğin, bir kullanıcının .css
sayfasını silmek için editusercss
hakkı gerekir.
See also
- API:Undelete - Undeletes a page.