From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page API:Main page and the translation is 37% complete.

Other languages:
العربية • ‎azərbaycanca • ‎български • ‎বাংলা • ‎čeština • ‎dansk • ‎Deutsch • ‎English • ‎Esperanto • ‎español • ‎فارسی • ‎français • ‎हिन्दी • ‎Հայերեն • ‎Bahasa Indonesia • ‎italiano • ‎日本語 • ‎Taqbaylit • ‎ಕನ್ನಡ • ‎한국어 • ‎lietuvių • ‎文言 • ‎मैथिली • ‎मराठी • ‎Nederlands • ‎occitan • ‎polski • ‎پښتو • ‎português • ‎português do Brasil • ‎română • ‎русский • ‎سنڌي • ‎ไทย • ‎Türkçe • ‎українська • ‎Tiếng Việt • ‎粵語 • ‎中文
Esta página es parte de la documentación de la API de acciones de MediaWiki.

API de acciones de MediaWiki

v · d · e
Esta es una vista general de la API de "acción". Selecciona el menú de la derecha para información más detallada sobre otros subtemas y otras API.

La API de acción de MediaWiki es un servicio web que proporciona un acceso conveniente a características, datos, y metadatos de la wiki sobre HTTP, a través de una URL que normalmente es api.phpManual:api.php. Los clientes solicitan "acciones" particulares especificando un parámetro action, principalmente action=query para obtener información. Era conocida como la API de MediaWiki, pero en la actualidad hay otras APIs que se conectan a MediaWiki tales como RESTBase y el servicio de consultas de Wikidata.


Si buscas una "API interna" o "API de PHP", puedes mirar la interfaz de extensión, que permite a los desarrolladores PHP añadir nuevas funcionalidades a una instalación de MediaWiki.
Los avisos de cambios de funcionalidad se envían a la poco concurrida lista de correo mediawiki-api-announce. Se recomienda la suscripción.

The MediaWiki action API can be used to monitor a MediaWiki installation, or create a bot to automatically maintain one. It provides direct, high-level access to the data contained in MediaWiki databases. Client programs can log in to a wiki, get data, and post changes automatically by making HTTP requests to the web service. Supported clients include bots, thin web-based JavaScript clients such as Navigation popups and LiveRC, end-user applications such as Vandal Fighter, and other web sites (Toolforge's utilities).

En las nuevas instalaciones de MediaWiki, el servicio web está habilitado por defecto, pero un administrador puede deshabilitarlo.

MediaWiki has two other outward-facing interfaces:

Un ejemplo simple

This URL tells English Wikipedia's web service API to send you the content of the main page:


Use any programming language to make an HTTP GET request for that URL (or just visit that link in your browser), and you'll get a JSON document which includes the current wiki markup for the page titled "Main Page". Changing the format to jsonfm will return a "pretty-printed" HTML result good for debugging.

Here is the jsonfm URL as an easier-to-read clickable link.

Let's pick that URL apart to show how it works.

The endpoint


This is the endpoint. It's like the home page of the MediaWiki web service API. This URL is the base URL for English Wikipedia's API, just as https://en.wikipedia.org/wiki/ is the base URL for its web site.

If you're writing a program to use English Wikipedia, every URL you construct will begin with this base URL. If you're using a different MediaWiki installation, you'll need to find its endpoint and use that instead. All Wikimedia wikis have endpoints that follow this pattern:

https://www.mediawiki.org/w/api.php     # API de MediaWiki
https://en.wikipedia.org/w/api.php      # API de Wikipedia en inglés
https://nl.wikipedia.org/w/api.php      # API de Wikipedia en neerlandés
https://commons.wikimedia.org/w/api.php # API de Wikimedia Commons

Versión de MediaWiki: 1.17

Since r75621, we have RSD for the endpoint: look for the link rel="EditURI" in the HTML source of any page and extract the api.php URL; the actual link contains additional info. For instance, on this wiki it's:

<link rel="EditURI" type="application/rsd+xml" href="//www.mediawiki.org/w/api.php?action=rsd" />

Otherwise, there's no safe way to locate the endpoint on any wiki. If you're lucky, either the full path to index.php will not be hidden under strange rewrite rules so that you'll only have to take the "edit" (or history) link and replace index.php (etc.) with api.php, or you'll be able to use the default script path (like w/api.php).

Now let's move on to the parameters in the query string of the URL.

The format

format=json This tells the API that we want data to be returned in JSON format. You might also want to try format=jsonfm to get an HTML version of the result that is good for debugging. The API supports other output formats such as XML and native PHP, but there are plans to remove less popular formats (phab:T95715), so you might not want to use them.

The action


The MediaWiki web service API implements dozens of actions and extensions implement many more; the dynamically generated API help documents all available actions on a wiki. In this case, we're using the "query" action to get some information. The "query" action is one of the API's most important actions, and it has extensive documentation of its own. What follows is just an explanation of a single example.

Action-specific parameters


The rest of the example URL contains parameters used by the "query" action. Here, we're telling the web service API that we want information about the Wiki page called "Main Page". (The %20 is a percent-encoded space.) If you need to query multiple pages, put them all in one request to optimize network and server resources: titles=PageA|PageB|PageC. See the query documentation for details.


You can request many kinds of information, or properties, about a page. This parameter tells the web service API that we want information about a particular revision of the page. Since we're not specifying any revision information, the API will give us information about the latest revision — the main page of Wikipedia as it stands right now.


Finally, this parameter tells the web service API that we want the content of the latest revision of the page. If we passed in rvprop=content|user instead, we'd get the latest page content and the name of the user who made the most recent revision.

Again, this is just one example. Queries are explained in more detail here, and the API reference lists all the possible actions, all the possible values for rvprop, and so on.

An introduction to the API by Roan Kattouw at the San Francisco Hackathon January 2012

Getting started

Before you start using the MediaWiki web service API, be sure to read these documents:

Beyond that point, what you need to read depends on what you want to do. The right-hand menu links to detailed, task-specific documentation, and some more general guidelines are given below.

Identifying your client

When you make HTTP requests to the MediaWiki web service API, be sure to specify a User-Agent header that properly identifies your client. Don't use the default User-Agent provided by your client library, but make up a custom header that identifies your script or service and provides some type of means of contacting you (e.g., an e-mail address).

An example User-Agent string might look like:

MyCoolTool/1.1 (https://example.org/MyCoolTool/; MyCoolTool@example.org) BasedOnSuperLib/1.4

On Wikimedia wikis, if you don't supply a User-Agent header, or you supply an empty or generic one, your request will fail with an HTTP 403 error (cf. m:User-Agent policy). Other MediaWiki installations may have similar policies.

If you are calling the API from browser-based JavaScript, you won't be able to influence the User-Agent header: the browser will use its own. To work around this, use the Api-User-Agent header:

// Using XMLHttpRequest
xhr.setRequestHeader( 'Api-User-Agent', 'Example/1.0' );

// Using jQuery
$.ajax( {
    url: remoteUrlWithOrigin,
    data: queryData,
    dataType: 'json',
    type: 'POST',
    headers: { 'Api-User-Agent': 'Example/1.0' },
    success: function(data) {
       // do something with data
} );

// Using mw.Api, specify it when creating the mw.Api object
var api = new mw.Api( {
    ajax: {
        headers: { 'Api-User-Agent': 'Example/1.0' }
} );
api.get( {...} ).done(function(data) {
    // do something with data

// Using fetch
fetch( remoteUrlWithOrigin, {
    method: 'POST',
    headers: new Headers( {
        'Api-User-Agent': 'Example/1.0'
    } )
    // Other init settings such as 'credentials'
} ).then( function ( response ) {
    if ( response.ok ) {
        return response.json();
    throw new Error( 'Network response was not ok: ' + response.statusText );
} ).then( function ( data ) {
    // do something with data

In PHP, you can identify your user-agent with code such as this:

ini_set('user_agent', 'MyCoolTool/1.1 (https://example.org/MyCoolTool/; MyCoolTool@example.org) BasedOnSuperLib/1.4');

O si utilizas de rizo:

curl_setopt($curl, CURLOPT_USERAGENT, 'MyCoolTool/1.1 (https://example.org/MyCoolTool/; MyCoolTool@example.org) BasedOnSuperLib/1.4');

Finalizar la sesión

Vuestro cliente probablemente necesitará a registro en a MediaWiki, posiblemente vía su cuenta de usuario propia. Ve el login página manual para detalles.

API etiquette

Complacer también leído: API:Etiquette

Si vuestras peticiones obtienen dato que puede ser cached para un rato, tendrías que tomar pasos a cache lo, así que no pides el mismo dato encima y encima otra vez. Más información aproximadamente índice-limitativo, concurrency, y general API etiquette puede ser encontrado en API:Etiquette. Algunos clientes pueden ser capaces a cache dato ellos, pero para otros (particularmente clientes de Javascript), esto no es posible.

Por la especificación de HTTP, peticiones de CORREO no pueden ser cached. Por tanto, siempre que estás leyendo dato del servicio web API, tendrías que utilizar CONSEGUIR peticiones, no CORREO.

i También nota que una petición no puede ser servida de cache a no ser que el URL es exactamente igual. Si haces una petición para $código1, y cache el resultado, entonces una petición para $código2 no pasará por el cache — incluso aunque MediaWiki regresa el mismo dato!

Tendrías que cuidar para normalizar el URLs envías al MediaWiki servicio web, de modo que ligeramente entrada de usuario diferente no te causará para malgastar tiempo en peticiones de HTTP innecesario. Puedes normalizar una lista de títulos de página por estámoviendo duplicados y esorting los títulos alfabéticamente. Las técnicas similares trabajarán para otras clases de datos.

Enlaces útiles

hey La barra de carta en el lado correcto de estos enlaces de página a más detallados, tarea-documentación concreta. Aquí es algunos enlaces teniendo que hacer con el API globalmente:

Enlaces archivados