Fetch es una biblioteca para obtener y almacenar en caché solicitudes de API. También incluye soporte especial para obtener y procesar mensajes del sistema.
Usage[]
Importando[]
Para importar y usar la biblioteca Fetch dentro de su script, use lo siguiente.
mw.hook('dev.fetch').add(function (fetch) {
// su código aquí
});
importArticle({
type: 'script',
article: 'u:dev:MediaWiki:Fetch.js'
});
Métodos[]
La biblioteca exporta el método window.dev.fetch, que acepta un parámetro. Este parámetro puede formatearse de tres formas.
- Si el parámetro es una cadena, la biblioteca recibirá ese mensaje y lo devolverá como una cadena. Si la cadena contiene varios mensajes separados por
|(ej.block|userrights), obtendrá cada uno de los mensajes y los devolverá como una función. Invocar la función sin un parámetro devolverá un objeto de todos los mensajes, mientras que suministrar un parámetro devuelve el valor de esa clave en el objeto. La clave puede ser el nombre del mensaje o su índice. - Si el parámetro es una array, la biblioteca obtendrá los mensajes especificados y los devolverá como una función invocable (ver arriba).
- Si el parámetro es un objeto, puede tener las siguientes propiedades, todas las cuales son opcionales.
| Nombre | Descripción | Defecto | Tipo |
|---|---|---|---|
lang
|
El idioma para recibir los mensajes del sistema. Usar solo con messages.
|
wgUserLanguage
|
cadena |
messages
|
Los mensajes del sistema para obtener. | N/A | cadena o array |
process
|
Procesamiento que debe aplicarse a los datos antes de que se devuelvan. | N/A | Función |
request
|
La solicitud de API y la devolución de llamada para ejecutar. | N/A | Función |
time
|
El tiempo, en milisegundos, durante el que se debe almacenar en caché la solicitud. | Un día | numero |
noCache
|
Si la solicitud debe almacenarse en caché. No se recomienda excepto para fines de depuración personal. | false
|
Booleano |
Después de completar la solicitud de API o recuperar la caché, la biblioteca devuelve una promesa.
Ejemplos[]
- Esto recibe un solo mensaje.
mw.hook('dev.fetch').add(function (fetch) {
fetch('block').then(function (msg) {
$('.wds-list').append('<li>' + msg + '</li>');
});
});
- Esto recibe varios mensajes.
mw.hook('dev.fetch').add(function (fetch) {
fetch('block|userrights').then(function (msg) {
$('.wds-list').append('<li>' + msg()[0] + msg('userrights') + '</li>');
});
});
- Esto recibe varios mensajes en alemán con un retraso de dos días.
mw.hook('dev.fetch').add(function (fetch) {
fetch({
lang: 'de',
messages: ['block', 'userrights'],
time: 2 * 24 * 60 * 60 * 1000
}).then(function (msg) {
$('.wds-list').append('<li>' + msg('block') + msg()[1] + '</li>');
});
});
- Esto ejecuta y almacena en caché una solicitud de API. Tenga en cuenta que la función
requestacepta dos parámetros, que deben usarse para resolver la promesa de la biblioteca.
mw.hook('dev.fetch').add(function (fetch) {
fetch({
request: function (resolve, reject) {
new mw.Api().get({
action: 'query',
titles: 'MediaWiki:ImportJS'
}).done(function (d) {
if (d.error) {
reject(d.error.code);
} else {
resolve(d.query.pages);
}
}).fail(function () {
reject();
});
},
name: 'PageExists'
}).then(function (d) {
if (!d[-1]) {
console.log('MediaWiki:ImportJS exists!');
}
});
});
Caché[]
Cada caché, de forma predeterminada, dura un día, después del cual se actualiza. La caché completa de Fetch también se borra regularmente aproximadamente cada 100 cargas de página. Para omitir esta caché, simplemente agregue ?debug=1 a la URL, que eliminará todos los elementos de Fetch y volverá a ejecutar todas las solicitudes de API. Alternativamente, use los comandos del teclado Ctrl + F5 o Ctrl + ⇧ Shift + R, que harán lo mismo y volverán a cargar la página. Para omitir la caché para un solo script, simplemente configure la opción noCache en true.
Dependents[]
Registro de cambios[]
| Version | Date | Description | Author |
|---|---|---|---|
| 1.0 | March 25, 2019 | Initial revision. | TheGoldenPatrik1 |
| 1.1 | April 2, 2019 | Cache messages. | TheGoldenPatrik1 |
| 1.2 | September 17, 2019 | Return a promise, cache API requests, add more parameters, support cache clearing. | TheGoldenPatrik1 |