API:Rollback/tr
| MediaWiki Eylem API'si |
|---|
| Temeller |
| Doğrulama |
| Hesaplar ve Kullanıcılar |
| Sayfa İşlemleri |
|
| Ara |
| Geliştirici Araçları |
| Eğitimler |
| g · t · d |
POST isteği, bir kullanıcının yaptığı son düzenleme serisini belirli bir sayfaya geri döndürmek içindir.
API belgesi
action=rollback
- This module requires read rights.
- This module requires write rights.
- This module only accepts POST requests.
- Source: MediaWiki
- License: GPL-2.0-or-later
Undo the last edit to the page.
If the last user who edited the page made multiple edits in a row, they will all be rolled back.
- title
Title of the page to roll back. Cannot be used together with pageid.
- pageid
Page ID of the page to roll back. Cannot be used together with title.
- Type: integer
Tags to apply to the rollback.
- Values (separate with | or alternative): AWB, convenient-discussions
- user
Name of the user whose edits are to be rolled back.
- This parameter is required.
- Type: user, by any of username, IP, Temporary user, interwiki name (e.g. "prefix>ExampleName") and user ID (e.g. "#12345")
- summary
Custom edit summary. If empty, default summary will be used.
- Default: (empty)
- markbot
Mark the reverted edits and the revert as bot edits.
- Type: boolean (details)
- watchlist
Unconditionally add or remove the page from the current user's watchlist, use preferences (ignored for bot users) or do not change watch.
- One of the following values: nochange, preferences, unwatch, watch
- Default: preferences
- watchlistexpiry
Watchlist expiry timestamp. Omit this parameter entirely to leave the current expiry unchanged.
- Type: expiry (details)
- token
A "rollback" token retrieved from action=query&meta=tokens
For compatibility, the token used in the web UI is also accepted.
- This parameter is required.
- Roll back the last edits to page MediaWiki by user Example.
- api.php?action=rollback&title=MediaWiki&user=Example&token=123ABC [open in sandbox]
- Roll back the last edits to page MediaWiki by IP user 192.0.2.5 with summary Reverting vandalism, and mark those edits and the revert as bot edits.
- api.php?action=rollback&title=MediaWiki&user=192.0.2.5&token=123ABC&summary=Reverting%20vandalism&markbot=1 [open in sandbox]
Örnek
Herhangi bir POST isteği yapmak çok adımlı bir işlemdir:
- API:Oturum aç üzerinde açıklanan yöntemlerden birini kullanarak oturum açın.
- CSRF anahtar GET'i:
- CSRF anahtarıyla bir sayfada işlem yapmak için bir POST isteği gönderin ve bu işlemde verilen sayfaya
editpagehak verin: - GET a rollback token:
- Vikiniz MediaWiki 1.24+ kullanıyorsa şu talimatları uygulayın:
- Geri alma anahtarı evrensel değildir: yalnızca her giriş için farklı değildir, aynı zamanda sayfanın başlığına ve düzenlemeleri geri alınacak kullanıcının adına da bağlıdır. MediaWiki 1.23 veya öncesi için şu talimatları izleyin:
POST isteği
Bir kullanıcının düzenlemelerini Deneme Tahtası sayfasına geri döndürmek için bir geri alma anahtarıyla bir POST isteği gönderin.
Yanıt
Aşağıdaki Yanıt bölümü, düzenlemeleri Deneme Tahtası sayfasına geri döndürmek için son POST isteği içindir.
{ "rollback":{ "title":"Sandbox", "pageid":94542, "summary":"Reverted edits by [[Special:Contributions/41.190.3.231|41.190.3.231]] ([[User talk:41.190.3.231|talk]]) to last revision by [[User:Didicodes|Didicodes]]", "revid":381084, "old_revid":381083, "last_revid":381070 } }
Yanıttaki revizyon kimlikleri:
revid- Geri alma tarafından oluşturulan yeni revizyonun kimliği.old_revid- En yeni revizyonun kimliği geri alınıyor. Geri alma işleminden önce, bu geçerli düzeltmedir.last_revid- Revizyonun geri alma tarafından geri yüklenen kimliği. Bu geri alınan en yeni revizyon.
Örnek kod
Python
#!/usr/bin/python3 """ rollback.py MediaWiki API Demos Demo of `rollback` module: Sending post request to rollback the last edits made to a given page. MIT license """ importrequests S = requests.Session() URL = "https://test.wikipedia.org/w/api.php" # Step 1: Retrieve a login token PARAMS_1 = { "action": "query", "meta": "tokens", "type": "login", "format": "json" } R = S.get(url=URL, params=PARAMS_1) DATA = R.json() LOGIN_TOKEN = DATA['query']['tokens']['logintoken'] # Step 2: 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_2 = { "action": "login", "lgname": "bot_user_name", "lgpassword": "bot_password", "lgtoken": LOGIN_TOKEN, "format": "json" } R = S.post(URL, data=PARAMS_2) # Step 3: While logged in, retrieve a CSRF token PARAMS_3 = { "action": "query", "meta": "tokens", "format": "json" } R = S.get(url=URL, params=PARAMS_3) DATA = R.json() CSRF_TOKEN = DATA["query"]["tokens"]["csrftoken"] # Step 4: POST request to edit a page PARAMS_4 = { "action": "edit", "title": "Project:Sandbox", "token": CSRF_TOKEN, "format": "json", "appendtext": "Hello" } R = S.post(URL, data=PARAMS_4) # Step 5: Retrieve a rollback token PARAMS_5 = { "action": "query", "meta": "tokens", "type": "rollback", "format": "json" } R = S.get(url=URL, params=PARAMS_5) DATA = R.json() ROLLBACK_TOKEN = DATA['query']['tokens']['rollbacktoken'] # Step 5: POST request to rollback a page PARAMS_6 = { "action": "rollback", "format": "json", "title": "Project:Sandbox", "user": "bot_user_name", "token": ROLLBACK_TOKEN, } R = S.post(URL, data=PARAMS_6) DATA = R.json() print(DATA)
PHP
<?php /* rollback.php MediaWiki API Demos Demo of `rollback` module: Sending post request to rollback the edits of a given page. MIT license */ $endPoint = "http://dev.wiki.local.wmftest.net:8080/w/api.php"; $login_Token = getLoginToken(); // Step 1 loginRequest( $login_Token ); // Step 2 $rollback_Token = getRollbackToken(); // Step 3 rollback( $rollback_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 rollback token function getRollbackToken() { global $endPoint; $params3 = [ "action" => "query", "meta" => "tokens", "type" => "rollback", "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"]["rollbacktoken"]; } // Step 4: POST request to rollback a page function rollback( $rollback_Token ) { global $endPoint; $params4 = [ "action" => "rollback", "title" => "Project:Sandbox", "user" => "10.0.2.2", "token" => $rollback_Token, "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
/* rollback.js MediaWiki API Demos Demo of `rollback` module: Sending post request to rollback the edits of a given page. MIT license */ varrequest=require('request').defaults({jar:true}), url="http://dev.wiki.local.wmftest.net:8080/w/api.php"; // Step 1: GET request to fetch login token functiongetLoginToken(){ varparams_0={ action:"query", meta:"tokens", type:"login", format:"json" }; request.get({url:url,qs:params_0},function(error,res,body){ if(error){ return; } vardata=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 functionloginRequest(login_token){ varparams_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; } getRollbackToken(); }); } // Step 3: GET request to fetch Rollback token functiongetRollbackToken(){ varparams_2={ action:"query", meta:"tokens", type:"rollback", format:"json" }; request.get({url:url,qs:params_2},function(error,res,body){ if(error){ return; } vardata=JSON.parse(body); rollback(data.query.tokens.rollbacktoken); }); } // Step 4: POST request to rollback a page functionrollback(rollback_token){ varparams_3={ action:"rollback", title:"Project:Sandbox", user:"10.0.2.2", token:rollback_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
/* rollback.js MediaWiki API Demos Demo of `rollback` module: Sending post request to rollback the last edits made to a given page. MIT License */ varparams={ action:'rollback', title:'Sandbox', user:'10.0.2.2', format:'json' }, api=newmw.Api(); api.postWithToken('rollback',params).done(function(data){ console.log(data); });
İzinler
Geri alma, hedef sayfada hem edit hem de rollback gerektirir; şu anda bu, OAuth tüketicilerinin, bot parolalarının vb. hem editpage hem de rollback hibe gerektirdiği anlamına geliyor, tek başına rollback yeterli değil!
Olası hatalar
Olağan şeylere ek olarak:
| Kod | Bilgi |
|---|---|
| alreadyrolled | Geri almaya çalıştığınız sayfa zaten geri alındı |
| missingparams | title ve pageid parametrelerinden biri gerekiyor.
|
| mustpostparams | Geri alma modülü bir POST isteği gerektirir. |
| notitle | title parametresi ayarlanmalıdır. |
| notoken | token parametresi ayarlanmalıdır. |
| nouser | user parametresi ayarlanmalıdır. |
| onlyauthor | Geri almaya çalıştığınız sayfanın yalnızca bir yazarı var |
| permissiondenied | İstediğiniz işlem gruplardan birindeki kullanıcılarla sınırlıdır: Hizmetliler, Geri döndürücüler |
Parametre geçmişi
- v1.24:
pageidtanıtıldı - v1.27:
tagstanıtıldı - v1.17:
watchlisttanıtıldı
Ek notlar
- İsteğe bağlı olarak, hem geri alma hem de geri alınan düzenlemeler bot olarak işaretlenebilir ve bu da varsayılan olarak Special:RecentChanges sayfasından gizler.
Ayrıca bakınız
- API:Edit - Bir sayfayı düzenler.
- Help:Düzenleme - Maddeleri düzenlemeyle ilgili faydalı bağlantılar içerir.
- API:Tokens - Oturum açmak veya POST istekleri yapmak için anahtarları kullanma hakkında daha fazla ayrıntıya sahiptir.
- API:Tokens (eylem) - MediaWiki'nin önceki sürümlerinde anahtar istemek için API:Tokens üzerinden farklı, kullanımdan kaldırılmış bir API.
- API:Filerevert - Dosyaları daha önceki bir duruma geri alır.
- API:Revisiondelete - Bir sayfadaki revizyonları siler ve geri yükler.
- API:Compare - Bir sayfadaki düzenlemeler arasında değişiklik yapmanızı sağlar.