API:Webwerwe versoeke
![]() | This page is part of the MediaWiki Action API documentation. |
As 'n gebruikerskrip of gadget 'n API moet oproep teen 'n ander MediaWiki-werf(bv.'N skrip op die Engelse Wikipedie moet beeldinligting op Commons nagaam),moet ditJSONP of CORS
JSONP gebruik
Die API se format=json
aanvaar 'n callback
parameter,waarvan die waarde 'n Javascript funksie is,waarin die JSON resultaat toegedraai sal word.
Dit kan gebruik word om die API op 'n afgeleë webwerf te noem deur <script>
etikette by die dokument dinamies te voeg.
= Voorbeeld
Kry versoek
Kry de titels van drie ewekansige bladsye van die Engelse Wikipedia
Voorbeeldkode
var apiEndpoint = "https://en.wikipedia.org/w/api.php";
var params = "action=query&list=random&rnlimit=3&format=json";
/**
* Die funksie om die resultaat toe te maak.
*/
var callback = function (response) {
var pages = response.query.random; // Verwerk die uitvoer om die titels te kry.
Object.keys(pages).forEach(function(key) {
console.log(pages[key].title);
});
};
var scriptTag = document.createElement("script"); // Skep dinamies 'n "skrif" etiket.
scriptTag.src = apiEndpoint + "?" + params + "&callback=callback"; // Wys na die navraagstring.
document.body.appendChild(scriptTag); // Voeg die skripmerk by die dokument
Antwoord
Kache Aye Shoi
Talk:Sarbka, Wągrowiec County
Category:Nakhon Ratchasima Province
CORS gebruik
Die MediaWiki API vereis dat die oorsprong
verskaf word as 'n navraag stringparameter,met die webwerf waarvandaan die versoek ontstaan,wat ooreenstem met die oorsprongkop wat deur die CORS protokol benodig word.
Let daarop dat hierdie parameter ingesluit moet word in enige voorvlugversoek, en dat dit ook in die vrae-stringgedeelte van die versoek-URI ingesluit moet word, selfs vir POST-versoeke.
Wanneer die origin
parameter verskaf word en die versoek nie 'n suksesvolle CORS antwoord lewer nie, sal MediaWiki ≥1.30 'n $verwerpingskopie terugstuur met 'n kort rede vir die mislukking, bv. in die geval van oorsprong wat nie ooreenstem nie of kopkoppe wat nie ondersteun word nie, in 'n $req headers versoek kop.
Ongeautoriseerde CORS-versoeke
Ongeverifieerde CORS versoeke kan van enige oorsprong gerig word deur die origin
versoekparameter op *
te stel. In hierdie geval sal MediaWiki die Access-Control-Allow-Credentials: false
kop in die antwoord insluit en die versoek verwerk asof dit afgemeld is.
Voorbeeld
Kry versoek
Kry die name van die eerste drie beelde van Wikimedia Commons af.
Voorbeeldkode
var apiEndpoint = "https://commons.wikimedia.org/w/api.php";
var params = "action=query&list=allimages&ailimit=3&format=json";
/**
* Stuur die versoek om die beelde te kry
*/
fetch(apiEndpoint + "?" + params + "&origin=*")
.then(function(response){return response.json();})
.then(function(response) {
var allimages = response.query.allimages; // Vewerk die uitvoer om die beelde te kry
Object.keys(allimages).forEach(function(key) {
console.log(allimages[key].name);
});
});
Antwoord
!!!!!_Mdina_Fortifications,_Ditch,_Bridge_and_Main_Gate.jpg
!!!!_Mdina_buildings_!!!!.jpg
!!!!_Palazzo_Dorell_ancillary_building.jpg
Geverifieerde CORS versoeke
Om 'n geverifieerde CORS-versoek te rig, moet die eksterne wiki se $wgCrossSiteAJAXdomains
instelling ingestel word om die oorsprongwebwerf toe te laat.
As die CORS-oorsprongstjek slaag, sal MediaWiki die Access-Control-Allow-Credentials: true
kop in die antwoord insluit, dus kan verifikasiekoekies gestuur word.
Manual:CORS bevat meer instruksies en voorbeelde oor hoe om CORS versoeke in JavaScript te hanteer.
Addisionele notas
- Gedetailleerde verskille tussen JSONP en CORS is beskikbaar by CORS vs JSONP.