Fandom Developers Wiki

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 request acepta 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[]

List of dependents using this library

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