API:Preguntas frecuentes

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

Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Ido • ‎Limburgs • ‎Nederlands • ‎Tiếng Việt • ‎Türkçe • ‎bosanski • ‎català • ‎dansk • ‎español • ‎français • ‎hrvatski • ‎italiano • ‎kurdî • ‎occitan • ‎polski • ‎português • ‎português do Brasil • ‎sicilianu • ‎suomi • ‎svenska • ‎čeština • ‎беларуская (тарашкевіца)‎ • ‎български • ‎русский • ‎українська • ‎العربية • ‎فارسی • ‎हिन्दी • ‎অসমীয়া • ‎মেইতেই লোন্ • ‎ಕನ್ನಡ • ‎ไทย • ‎中文 • ‎日本語 • ‎粵語 • ‎한국어
Esta página está en progreso

Also read the API:Portada . It answers some questions not answered here and points to other useful pages.

¿Cómo ...

consigo ayuda?

  1. Leyendo este FAQ
  2. Trate de encontrar la respuesta a su pregunta en el documentación de la API aquí o en la página de inicio API autodocumentado
  3. Si no puede encontrar la respuesta a su pregunta en la web, usted puede hacer su pregunta en la lista de correo de la api de mediawiki

reporto un error o pido una funcionalidad?

Si has encontrado un bug en la API o tienes una petición o sugerencia para una nueva funcionalidad, infórmelo en Phabricator. Busque bugs existentes primero (No cree temas sobre bugs duplicados) e introduzca MediaWiki-API como el proyecto cuándo informe sobre un bug en la API. Si la funcionalidad estás pidiendo o el bug sobre el que estás informando se encuentra en una extensión (p. ej. AbuseFilter, FlaggedRevs), añade que el proyecto de la extensión, p. ej. "MediaWiki-extensiones-AbuseFilter".

figure out what action or submodule to call?

La API de MediaWiki es grande y las extensiones la amplían aún más. Algunas sugerencias:

  • If you are trying to get information about a page, you probably will use a prop= submodule of action=query. Other query submodules return lists of pages and meta-information about the wiki. View the generated API help of all query submodules.
  • Si ve una página wiki haciendo algo interesante después de la carga de la página inicial, debe hacer una solicitud de la API.
    • Abre la consola de desarrollador de tu navegador y busca sus peticiones de red a api.php
    • Todo el código en Wikimedia wikis es código abierto, así que puedes leer el código de fuente que hace las peticiones a la API. Una estrategia para localizar código de fuente es añadir ?uselang=qqx a la URL de la página de la wiki para ver las llaves de mensaje cerca de donde se presentan los resultados de la API, para que entonces puedas buscar esta llave de mensaje en los localizados archivos de mensaje i18n/en.json de núcleo y extensiones.
  • You can view the entire expanded generated API help on one page by appending recursivesubmodules=1, here it is.

Los enlaces a la ayuda de la API generada arriba van a Wikipedia en inglés. Debería buscar la ayuda de la API generada en la wiki donde realizará las solicitudes de la API, ya que diferentes wikis tienen diferentes configuraciones y diferentes conjuntos de extensiones.

llamo a la API?

El API se llama mediante el envío de peticiones HTTP a api.php. Por ejemplo, en la Wikipedia en Inglés, la URL es http://en.wikipedia.org/w/api.php; otras wikis tienen api.php con URLs similares: sólo tiene que utilizar api.php donde el URL de costumbre tiene index.php. Si usted está tratando de acceder a la API en un tercero (no Wikimedia-operado) wiki y no puede averiguar la URL de api.php, póngase en contacto con el propietario de la wiki.

Para jugar con el API

  • use Special:ApiSandbox
  • Habilitar la consola de desarrollador de vuestro navegador y mirar peticiones netas a api.php cuando interaccionas con el wiki

controlo el formato de salida?

Pass &format=someformat in the query string. See the list of output formats for more information.

Comprobar la disponibilidad de un módulo de la API

You can use action=paraminfo to request information about the API modules and submodules (such as query+geosearch) that you want to invoke. The paraminfo.modules array in the response must contain a path key for each module and submodule, anything missing is not available.

If an API module isn't available and you know which extension implements it, you can check if that extension is loaded by querying the siteinfo meta information for siprop=extensions and look for its name in the returned list.

Incluso si un módulo parece estar disponible, siempre debe manejar los errores de la API.

detecto errores?

Consulta Errores y alertas.

An error response from the API will set the MediaWiki-API-Error HTTP header and return an error structure. For an example error response, visit https://en.wikipedia.org/w/api.php?action=blah.

obtengo el contenido de una página (wikitexto)?

If you just want the raw wikitext without any other information whatsoever, it's best to use index.php's action=raw mode instead of the API: https://en.wikipedia.org/w/index.php?action=raw&title=Main_Page. Note that this will output plain wikitext without any formatting. See also action=raw documentation.

To get more information about the page and its latest version, use the API: https://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Main_Page. See also the documentation for the prop=revisions module.

Puedes recuperar 50 páginas por solicitud del API: https://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles=Main_Page%7CArticles. Esto también funciona con generadores.

obtengo el contenido de una página (HTML)?

If you just want the HTML, it's best to use index.php's action=render mode instead of the API: https://en.wikipedia.org/wiki/Main_Page?action=render. See action=render documentation.

With the advent of RESTBase, on Wikimedia wikis you can instead request the cached HTML of a page, for example https://rest.wikimedia.org/en.wikipedia.org/v1/page/html/Main_Page (for performance this is also available at https://en.wikipedia.org/api/rest_v1/page/html/Main_Page to reuse an existing network connection to the wiki). Unlike ?action=render this returns a complete HTML document (i.e. <html><head>various metadata</head><body>...</body></html>); you could use an HTML parsing library to get the inner HTML of the <body> tag (see the documentation).

Para obtener más información destilada del wikitexto en tiempo de análisis (enlaces, categorías, secciones, etc.), puede:

lidiar con los cambios en la API de 2015?

The default continuation behavior changed in MediaWiki 1.26. Si pides el dato adicional basó encima continuar información de un API respuesta, tienes que actualizar vuestro código. Either

Also, since MediaWiki 1.25 an improved output structure for JSON and PHP formats has been available if you add formatversion=2 to your requests. A fecha de Julio de 2015, todavía se considera experimental porque algunos módulos de la API pueden conseguir mayores mejoras en este modo. Si estás dispuesto a arriesgar necesitando hacer cambios futuros para adaptar, es mucho mejor procesar los resultados de la API con formatversion=2

¿Por qué ...

obtengo errores HTTP 403?

This could mean you are not passing a User-Agent HTTP header or that your User-Agent is empty or blacklisted m:User-Agent policy. See API:Client code for more information. Also, it could mean that you are passing & in the query string of a GET request: Wikimedia blocks all such requests, use POST for them instead.

me sale el error readapidenied?

The wiki you are querying contains private content and requires users to log in in order to be able to read all pages. This means that a client needs to be logged in to query any information at all through the API. See API:Login for more information. It's not currently possible to query the contents of whitelisted pages without logging in, even though they are available in the regular user interface.

me salen errores badtoken?

This is usually because you are either not passing a token at all (read about tokens in the documentation of the module you are using) or because you are having trouble staying logged in. It's also possible you are reusing a type of token that can't be reused (see module documentation for details) or that you are using a token that's associated with an expired session. In general, when using cached tokens, refetch the token (see API:Tokens) and try again before giving up.

do I get warnings instead of tokens (Action 'edit' is not allowed for the current user)?

You either don't have the right to execute the action you requested, or you are having trouble staying logged in.

do I get mustposttoken error?

The action you are attempting must be requested using HTTP POST. You probably clicked on api.php URL in a browser or modified an existing URL in the browser's location field, but that results in an HTTP GET request. You have to use a library (such as the mediawiki.api ResourceLoader module) or utility that can make POST requests; usually you also have to provide it your session cookies and an API:token so MediaWiki can verify that you are the logged-in user with rights to perform the action. As a hack, you might be able to use the cURL command-line utility, providing it each API parameter with -F 'action=delete' -F 'token=hexadecimal stuff+\' and the necessary browser cookies with -H 'Cookie:your session cookies'. The Network panel of the browser developer tools window (Ctrl+Shift+I) in Firefox and chromium has a "Copy as cURL" menu item that can help, but it's still fiddly.

Depending on what you want to do it's easier to learn how to use a bot or library that handles the details of login, cookies, and tokens for you.

X no está disponible a través de la API?

Not all features available in the user interface are available through the API. Such features weren't implemented either because no one has gotten around to it yet or because no one has requested them. For information about filing feature requests, see above.

la llamada de mi API en las wikis de Wikimedia sólo devuelve un error HTML?

Si utiliza llamadas a la API con las peticiones POST asegurarse de que estas peticiones no utilizan Content-Type: multipart / form-data "'. Esto sucede, por ejemplo, si utiliza CURL para acceder a la API y pasa sus parámetros POST como una matriz. Los servidores proxy Squid que se utilizan en los servidores frontend en la granja wiki Wikimedia no manejan correctamente que, por tanto, se devuelve un error.

En cambio, use la notación "valor1=llave1&valor2&llave2.." para pasar los parámetros como un string, similar a las peticiones GET.

En otras wikis que se accede directamente no hace la diferencia.

Además, algunos programas (como cURL) envía un encabezado de Expect: 100-continue para peticiones POST más largos (>1024 bytes). Los wikis wikimedia que pasan por los servidores Squid no pueden hacer frente a esto. Si usted todavía está recibiendo errores de HTML con peticiones de correos, y no está en el sistema, pruebe a definir un encabezado en blanco Esperar (por ejemplo, usando cURL en la línea de comandos, utilice la opción de --header 'Expect:').

no funcionan las urls de API muy largas?

There is a maximum limit of the url size that can be used with the API when making GET requests. This limit varies depending on the website. Wikimedia's limit is roughly around 8100 characters. To get around this limit use POST requests instead (you may also need to set the Expect header, as described above)