Fandom Developers Wiki
Advertisement

Fetch, API isteklerini almak ve önbelleğe almak için kullanılan bir kitaplıktır. Ayrıca sistem mesajlarını almak ve işlemek için özel destek içerir.

Kullanım[]

İçe aktarma[]

Betiğinizin içindeki Fetch kitaplığını içe aktarmak ve kullanmak için aşağıdakileri kullanın.

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

Yöntemler[]

Kitaplık, bir parametreyi kabul eden window.dev.fetch yöntemini dışa aktarır. Bu parametre üç şekilde biçimlendirilebilir.

  • Parametre bir dize ise, kitaplık bu mesajı alır ve bir string olarak döndürür. Dize | ile ayrılmış birden çok mesaj içeriyorsa (ör. block|userrights), mesajların her birini alır ve bunları bir işlev. Fonksiyonu bir parametre olmadan çağırmak, tüm mesajların bir nesnesini döndürürken, bir parametre sağlamak, nesnedeki o anahtarın değerini döndürür. Anahtar, mesaj adı veya dizini olabilir.
  • Parametre bir dizi ise, kitaplık belirtilen mesajları alır ve çağrılabilir bir fonksiyon olarak döndürür (yukarıya bakın).
  • Parametre bir nesne ise, tümü isteğe bağlı olan aşağıdaki özelliklere sahip olabilir.
Ad Açıklama Varsayılan Tür
lang Sistem mesajlarının alınacağı dil. Yalnızca messages ile kullanın. wgUserLanguage dize
messages Alınacak sistem mesajları. Bilinmiyor dize veya dizi
process Veriler döndürülmeden önce uygulanması gereken işleme. Bilinmiyor işlev
request API isteği ve yürütülecek geri çağrı. Bilinmiyor işlev
time İsteğin önbelleğe alınması gereken milisaniye cinsinden süre. Bir gün sayı
noCache İsteğin önbelleğe alınması gerekip gerekmediği. Kişisel hata ayıklama amaçları dışında önerilmez. false boole

API isteğini tamamladıktan veya önbelleği aldıktan sonra kitaplık bir söz verir.

Örnekler[]

Bu tek bir mesaj alır.
mw.hook('dev.fetch').add(function (fetch) {
    fetch('block').then(function (msg) {
        $('.wds-list').append('<li>' + msg + '</li>');
    });
});
Bu birden fazla mesaj alır.
mw.hook('dev.fetch').add(function (fetch) {
    fetch('block|userrights').then(function (msg) {
        $('.wds-list').append('<li>' + msg()[0] + msg('userrights') + '</li>');
    });
});
Bu, iki günlük bir gecikmeyle Almanca olarak birden fazla mesaj alır.
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>');
    });
});
Bu, bir API isteğini yürütür ve önbelleğe alır. request işlevinin, kitaplığın sözünü çözmek için kullanılması gereken iki parametreyi kabul ettiğini unutmayın.
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!');
        }
    });
});

Önbellek[]

Her önbellek varsayılan olarak bir gün sürer ve ardından güncellenir. Fetch önbelleğinin tamamı da yaklaşık olarak her 100 sayfa yüklemesinde bir düzenli olarak temizlenir. Bu önbelleği atlamak için, her Fetch'ini silecek ve her API isteğini yeniden çalıştıracak olan URL'ye ?debug=1 eklemeniz yeterlidir. Alternatif olarak, aynı şeyi yapacak ve sayfayı yeniden yükleyecek olan Ctrl + F5 veya Ctrl + ⇧ Shift + R klavye komutlarını kullanın. Yalnızca bir betik için önbelleği atlamak için noCache seçeneğini true olarak ayarlamanız yeterlidir.

Bağımlılar[]

Bu kitaplığı kullanan bağımlıların listesi

Değişklik günlüğü[]

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
Advertisement