API:Webwerwe versoeke

From mediawiki.org
This page is a translated version of the page API:Cross-site requests and the translation is 86% complete.
Outdated translations are marked like this.

If an external site needs to make an API call against a MediaWiki site, it must use CORS or JSONP.

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

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.

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.

Enige JSONP versoeke sal verwerk word asof u afgemeld is (dit wil sê as 'n anonieme gebruiker) selfs nadat u op die eksterne wiki aangemeld het.

= 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

Addisionele notas

  • Gedetailleerde verskille tussen JSONP en CORS is beskikbaar by CORS vs JSONP.

Sien ook