network.fetch host allowlist’i), binding ayarları (settingsSchema + action.settingsChanged), client.networkFetch ve fail-closed hata gösterimi.
1. Manifest: izin ve aksiyon bildirin
manifest.json içinde permissions ve actions bölümlerini güncelleyin:
network.fetchmanifest’te bildirilen HTTPS hostlarla sınırlıdır;wttr.indışına istekCAPABILITY_DENIEDalır.settingsSchemaalanı, kullanıcı aksiyonu tuşa atadığında uygulamanın ayar panelinde görünür.
2. Runtime: event → ayar → ağ → ekran
runtime.mjs:
- Ayar okuma:
getSettings(bindingId)binding’e özel kalıcı ayarı döner; kullanıcı ayarı değiştirinceaction.settingsChangedtetiklenir ve yeniden çizersiniz. - Ağ:
networkFetch({ url, method })host tarafından doğrulanır (HTTPS-only, host allowlist, bounded request/response). Yanıt gövdesi host adapter’ının döndürdüğü bounded değerdir; savunmacı okuyun. - Hata: başarısızlıkta
showError+ kısa başlık; exception yutmayın, loglayın.
3. Deneyin
- Geliştirici penceresinden projeyi yeniden yükleyin (manifest değiştiği için gerekiyorsa kaldırıp yeniden seçin).
- Tuşlar ekranında Hava aksiyonunu bir tuşa atayın.
- Tuşun ayar panelinde Şehir girin (örn.
Istanbul). Tuş,Istanbul\n+29°Cgibi güncellenir. - Tuşa basmak veriyi yeniler.
Nereye gidebilirsiniz
- Sıcaklığı
storageSetile önbelleğe alıpwillAppear’da anında göstermek (bkz. referans:storage.private). - Kadran (Knob) desteği:
controllers: ["Knob"]+action.dialRotateile şehirler arasında geçiş. - Credential’lı API’ler:
network.fetchWithCredential— raw token plugin’e asla dönmez.
Bu proje T2
sandbox-js hedefine taşınabilir: aynı SDK yüzeyi Worker transportuyla çalışır. Public upload durumu için Dağıtım durumu.