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.
Usage[]
İç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.
requestiş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[]
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 |