API:Etiquette
| API de acciones de MediaWiki |
|---|
| Uso básico |
| Autentificación |
| Cuentas y usuarios |
| Operaciones en páginas |
|
| Búsqueda |
| Herramientas de desarrollador |
| Tutoriales |
| v · d · e |
- Set an informative User-Agent string with contact information, or you may be IP-blocked without notice.
- Make your requests in series rather than in parallel, by waiting for one request to finish before sending a new request.
- Realice actualizaciones agrupadas a través de un solo
editEntity, para todos los idiomas y para etiquetas, descripciones y alias a la vez.
Esta página contiene las buenas prácticas que tendrías que seguir cuando utilices el API.
Comportamiento
Límite de petición
No hay un límite estricto y rápido para las solicitudes de lectura, pero sea considerado e intente no eliminar un sitio. La mayoría de los administradores de sistemas se reservan el derecho de bloquearlo sin ceremonias si pones en peligro la estabilidad de su sitio.
Haciendo tus solicitudes en serie en lugar de en paralelo, esperando a que finalice una solicitud antes de enviar una nueva solicitud, debería resultar en una tasa de solicitud segura. También es recomendado que solicites varios artículos en una sola solicitud:
- Usar el carácter de canalización (
|) siempre que sea posible, por ejemplotitles=PageA|PageB|PageC, en lugar de hacer una nueva solicitud para cada título. - Usar un generator en lugar de hacer una petición por cada resultado de otra petición.
- Use la compresión GZip al realizar llamadas API configurando
Accept-Encoding: gzippara reducir el uso de ancho de banda.
Las solicitudes que realizan en ediciones, modifican el estado o de otro modo no son solicitudes de solo lectura, están sujetas a limitación de velocidad. El límite de tarifa exacto que se aplica puede depender del tipo de acción, sus derechos de usuario y la configuración del sitio web al que realiza la solicitud. Los límites que se te aplican a ti se pueden determinar accediendo al punto final de la API de action=query&meta=userinfo&uiprop=ratelimits.
Cuando alcances el límite de tasa de solicitud, recibirás un API error response con el código de error ratelimited. Cuando encuentres este error, puedes volver a intentar esa solicitud, sin embargo, debe aumentar el tiempo entre solicitudes posteriores. Una estrategia común para esto es Retroceso exponencial.
When you encounter this error, you may retry that request, however you should increase the time between subsequent requests.
A common strategy for this is Exponential backoff.
Análisis de revisiones
Si bien es posible consultar los resultados de un número de revisión específico utilizando el parámetro revid, esta es una operación costosa para los servidores.
Para recuperar una revisión específica, use el parámetro oldid. Por ejemplo:
El parámetro maxlag
Si tu tarea no es interactiva, es decir, un usuario no está esperando el resultado, debes usar el parámetro maxlag.
El valor del parámetro maxlag debe ser un número entero de segundos.
Por ejemplo:
Esto evitará que su tarea se ejecute cuando la carga en los servidores sea alta. Los valores más altos significan comportamiento más agresivo, los valores más bajos son mejores.
Ver Manual:Parámetro maxlag para más detalles.
El encabezado User-Agent
Se recomienda establecer un encabezado de agente de usuario descriptivo.
Para hacerlo, usa User-Agent:nombre de cliente/versión (información de contacto, por ejemplo nombre de usuario, correo electrónico) framework/version....
Por ejemplo en PHP:
ini_set('user_agent', 'MyCoolTool/1.1 (https://example.org/MyCoolTool/; MyCoolTool@example.org) UsedBaseLibrary/1.4');
No simplemente copies el agente-de-usuario de un navegador web popular. Esto garantiza que si surge un problema, es fácil rastrear dónde se origina.
Si estás llamando a la API desde JavaScript basado en el navegador, es posible que no puedas influir en el encabezado de User-Agent, dependiendo del navegador.
Para evitar esto, usa el encabezamiento Api-User-Agent.
Formatos de dato
Todos los nuevos usuarios de API deben usar JSON . Ver API:Formatos de dato para más detalles.
Caching
If your requests obtain data that can be cached for a while, you should take steps to cache it, so you don't request the same data over and over again. Some clients may be able to cache data themselves, but for others (particularly JavaScript clients), this is not possible.
POST requests
Whenever you're reading data from the web service API, you should try to use GET requests if possible, not POST, as the latter are not cacheable and, in multi-datacenter configurations (including Wikimedia sites), may go to a farther data center.
In exceptional cases where you really need to use POST for a read request, such as calling action=parse with a long string of wikitext, consider setting the Promise-Non-Write-API-Action: true header.
This helps ensure that your POST request is processed by an application server in the closest data center, if appropriate.
Guidelines for Wikimedia wikis
In addition to the best practices described above, the following guidelines apply to using the Action API to access Wikimedia wikis. See also the official guidelines about API usage on Wikimedia Foundation Governance wiki.
User-Agent policy
API requests to Wikimedia wikis must include a meaningful User-Agent header. Consulta m:User-Agent_policy para más detalles.
Rate limits
In addition to rate limits based on user actions, API requests to Wikimedia wiki are subject to API rate limits .
Rendimiento
Downloading data in bulk is not always extremely efficient using the Action API. On Wikimedia wikis, there are faster ways to get data in bulk, see m:Research:Data and wikitech:Portal:Data Services for more details.
Véase también
- Official guidelines about API usage on Wikimedia Foundation Governance wiki
- Wikimedia Robot policy on Wikitech
- API:Main page - La guía de inicio rápida.
- Manual:Rate limits & Wikimedia APIs/Rate limits
Code stewardship
- Maintained by MediaWiki Interfaces Team.
- Live chat (IRC): #mediawiki-core connect
- Issue tracker: Phabricator MediaWiki-Action-API (Report an issue)