Fandom Developers Wiki

Fetch — це бібліотека для отримання та кешування запитів API. Він також включає спеціальну підтримку отримання та обробки системних повідомлень.

Usage[]

Імпортування[]

Щоб імпортувати та використовувати бібліотеку Fetch усередині вашого скрипта, використовуйте таке:

mw.hook('dev.fetch').add(function (fetch) {
    // your code here
});
importArticle({
    type: 'script',
    article: 'u:dev:MediaWiki:Fetch.js'
});

Методи[]

Бібліотека експортує метод window.dev.fetch, який приймає один параметр. Цей параметр може бути відформатований трьома способами.

  • Якщо параметром є рядок, бібліотека отримає це повідомлення та поверне його як рядок. Якщо рядок містить кілька повідомлень, розділених | (наприклад, block|userrights), він отримає кожне з повідомлень і поверне їх як функція. Виклик функції без параметра поверне об'єкт усіх повідомлень, тоді як надання параметра поверне значення цього ключа в об'єкті. Ключем може бути як ім'я повідомлення, так і його індекс.
  • Якщо параметром є масив, бібліотека отримає вказані повідомлення та поверне їх як функцію, що викликається (див. Вище).
  • Якщо параметр є об'єктом, він може мати такі властивості, усі з яких є необов'язковими.
Назва Опис За замовчуванням Тип
lang Мова для отримання системних повідомлень. Використовувати лише з messages. wgUserLanguage рядок
messages Повідомлення системи, які потрібно отримати. Не застосовується рядок або масив
process Обробка, яка повинна бути застосована до даних перед їх поверненням. Не застосовується функція
request Виконання запиту API та зворотного виклику. Не застосовується функція
time Час у мілісекундах, протягом якого запит слід кешувати. Один день номер
noCache Чи слід запит кешувати. Не рекомендується, за винятком особистих цілей налагодження. false логічна

After completing the API request or retrieving the cache, the library returns a promise.

Приклади[]

Це отримує одне повідомлення.
mw.hook('dev.fetch').add(function (fetch) {
    fetch('block').then(function (msg) {
        $('.wds-list').append('<li>' + msg + '</li>');
    });
});
Це отримує кілька повідомлень.
mw.hook('dev.fetch').add(function (fetch) {
    fetch('block|userrights').then(function (msg) {
        $('.wds-list').append('<li>' + msg()[0] + msg('userrights') + '</li>');
    });
});
Це отримує кілька повідомлень німецькою мовою із затримкою на два дні.
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>');
    });
});
Це виконує та кешує запит API. Зверніть увагу, що функція request приймає два параметри, які слід використовувати для вирішення обіцянки бібліотеки.
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!');
        }
    });
});

Кеш[]

Кожен кеш за замовчуванням триває одну добу, після чого він оновлюється. Весь кеш Fetch також регулярно очищається приблизно кожні 100 завантажень сторінки. Щоб обійти цей кеш, просто додайте ?debug=1 до URL-адреси, яка вилучить кожен елемент Fetch і повторно запустить кожен запит API. В якості альтернативи використовуйте команди на клавіатурі Ctrl + F5 або Ctrl + ⇧ Shift + R, які зроблять те саме і перезавантажать сторінку. Щоб обійти кеш лише для одного сценарію, просто встановіть для параметра noCache значення true.

Утриманці[]

Список утриманців, які використовують цю бібліотеку

Журнал змін[]

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