واجهة برمجة التطبيقات:وسم
Appearance
هذه الصفحة جزء من توثيق واجهة برمجة تطبيقات ميدياويكي التي تحمل اسم Action. |
طلب POST الغرض منه إضافة وسوم من مراجعات منفردة أو من بنود في سجلات أو حذفها.
إصدار ميدياويكي: | ≥ 1.25 |
توثيق واجهة برمجة التطبيقات
مثال
إن تصميم طلب POST هو مسألة متعددة الخطوات:
- سجل الدخول مستخدما واحد من السبل المبينة في واجهة برمجة التطبيقات:تسجيل_الدخول .
- احصل على رمز تعديل/CSRF كما هو مبين هنا واجهة برمجة التطبيقات:Tokens
- إرسال طلب POST، مستخدمًا رمز CSRF، كي تضيف وسوم من مراجعات منفردة أو من بنود في سجلات أو حذفها.
عينة الكود البرمجي التالية تغطي هذه الخطوات.
طلب POST
حذف وسم النشر العشوائي (spam) من بند السجل رقم 123 مع إضافة السبب
Wrongly applied
.
النتيجة
{
"tag": [
{
"logid": 123,
"status": "success",
"noop": ""
}
]
}
عينة من الكود البرمجي
Python
#!/usr/bin/python3
"""
tag.py
MediaWiki API Demos
Demo of `Tag` module: Remove the spam tag from log entry ID 123 with the reason Wrongly
applied
MIT license
"""
import requests
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 log in. For this login
# method, obtain credentials by first visiting
# https://www.test.wikipedia.org/wiki/Manual:Bot_passwords
# See https://www.mediawiki.org/wiki/API:Login for more
# information on log in methods.
PARAMS_2 = {
"action": "login",
"lgname": "user_name",
"lgpassword": "password",
"format": "json",
"lgtoken": LOGIN_TOKEN
}
R = S.post(URL, data=PARAMS_2)
DATA = R.json()
# 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: Send a POST request to remove the spam tag from log entry ID 123
# with the reason Wrongly applied
PARAMS_4 = {
"token":CSRF_TOKEN,
"action":"tag",
"format":"json",
"logid":"123",
"remove":"spam",
"reason":"Wrongly applied"
}
R = S.post(URL, data=PARAMS_4)
DATA = R.text
print(DATA)
PHP
<?php
/*
tag.php
MediaWiki API Demos
Demo of `Tag` module: Remove the spam tag from log entry ID 123 with the reason Wrongly
applied
MIT license
*/
$endPoint = "https://test.wikipedia.org/w/api.php";
$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$csrf_Token = getCSRFToken(); // Step 3
stashEdit( $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: Send a POST request to remove the spam tag from log entry ID 123
// with the reason Wrongly applied
function stashEdit( $csrftoken ) {
global $endPoint;
$params4 = [
"action" => "tag",
"format" => "json",
"token" => $csrftoken,
"logid" => "123",
"remove" => "spam",
"reason" => "Wrongly applied"
];
$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" );
$response = curl_exec($ch);
curl_close($ch);
echo ($response);
}
JavaScript
/*
tag.js
MediaWiki API Demos
Demo of `Tag` module: Remove the spam tag from log entry ID 123 with the reason Wrongly
applied
MIT license
*/
var request = require("request").defaults({jar: true}),
url = "https://test.wikipedia.org/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);
stashEdit(data.query.tokens.csrftoken);
});
}
// Step 4: remove the spam tag from log entry ID 123 with the reason Wrongly applied
function stashEdit(csrf_token) {
var params_3 = {
action: "compare",
format: "json",
token: csrf_token,
logid: "123",
remove: "spam",
reason: "Wrongly applied"
};
request.post({ url: url, form: params_3 }, function(error, res, body) {
if (error) {
return;
}
console.log(body);
});
}
// Start From Step 1
getLoginToken();
MediaWiki JS
/*
tag.js
MediaWiki API Demos
Demo of `Tag` module: Remove the spam tag from log entry ID 123 with the reason Wrongly
applied
MIT license
*/
var params = {
action: "compare",
format: "json",
token: csrf_token,
logid: "123",
remove: "spam",
reason: "Wrongly applied"
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
الأخطاء المحتملة
الكود | معلومات |
---|---|
apierror-blocked | لقد تم منعك من التحرير. |
apierror-nosuchlogid | لا توجد مدخلة سجل بالمعرف logid. |
apierror-nosuchrcid | لا يوجد تغيير حديث بالمعرف rcid. |
apierror-nosuchrevid | لا توجد مراجعة بالمعرف revid. |
تاريخ المتغيرات
- v1.29: إضافة
tags