API:Webwerwe versoeke
This page is part of the MediaWiki Action API documentation. |
If an external site needs to make an API call against a MediaWiki site, it must use CORS (preferred) or JSONP (older, less secure).
User scripts and gadgets within the same wiki-family (e.g. a script on the English Wikipedia needs to check image information on Commons) should use mediawiki.ForeignApi
, which uses CORS under the hood.
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 $code2 kop in die antwoord insluit en die versoek verwerk asof dit afgemeld is.
In this case MediaWiki will include the Access-Control-Allow-Credentials: false
header in the response and will process the request as if logged out.
Voorbeeld
Kry versoek
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.
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
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.
*/
window.my_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=my_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