Kitaplar / Yöntem Birimler ve Araçlar Kılavuzu / 6. Ağ: web servislerine bağlanmak
6. Ağ: web servislerine bağlanmak
Ağ birimi HTTP istekleri gönderir. İstek eşzamanlıdır: program yanıt gelene kadar bekler. Yanıt bir sözlüktür: durum (200, 404…), gövde (metin) ve başlıklar (adları küçük harfli bir sözlük).
program HavaDurumu
kullan Ağ, Veri
değişken
yanıt: sözlük
veri: herhangi
başla
dene
yanıt := HttpAl('https://api.ornek.de/hava?' + SorguYap(['şehir': 'İzmir', 'birim': 'C']))
eğer yanıt['durum'] = 200 ise
başla
veri := JSONÇöz(yanıt['gövde'])
yaz('İzmir: ' + veri['sıcaklık'] + ' °C', 1)
bitir
değilse yaz('Servis ' + yanıt['durum'] + ' döndürdü', 1)
yakala (h)
yaz('Bağlanılamadı: ' + h.mesaj, 1)
bitir
bitir.Bu program örnek bir adrese bağlandığı için çıktısı verilmemiştir; adresi kullanacağınız servisinkiyle değiştirebilirsiniz. Dikkat edilecek iki nokta vardır: 404 ya da 500 gibi yanıtlar hata değildir, durum ile denetlenir; sunucuya hiç ulaşılamazsa ya da süre dolarsa dene … yakala ile yakalanabilen bir çalışma hatası oluşur.
| Üye | Ne yapar |
|---|---|
HttpAl(adres [, başlıklar, zamanAşımı]) |
GET isteği |
HttpGönder(adres, gövde [, başlıklar, zamanAşımı]) |
POST isteği |
Httpİstek(yöntem, adres [, gövde, başlıklar, zamanAşımı]) |
GET, POST, PUT, PATCH, DELETE ya da HEAD |
SorguYap(sözlük) |
a=1&b=x%20y biçiminde sorgu dizgisi |
UrlKodla(metin), UrlÇöz(metin) |
Adreste güvenle kullanılacak biçime çevirir, geri çözer |
JSON göndermek için gövdeyi Veri.JSONYap ile üretip türünü başlıkta bildirebilirsiniz:
yanıt := HttpGönder('https://api.ornek.de/notlar', JSONYap(['metin': 'süt al']),
['Content-Type': 'application/json', 'Authorization': 'Bearer ' + anahtar])Zaman aşımı saniyedir (varsayılan 30). Yanıt en çok 10 MB olabilir ve UTF-8 metin olarak okunur; dosya indirme, akış ve WebSocket yoktur. Başlık değerlerinde yalnızca ASCII karakterler kullanılabilir; Türkçe karakterleri UrlKodla ile kodlamanız gerekir. API anahtarlarını programa yazmak yerine Sistem.Ortam('ANAHTAR') ile ortam değişkeninden okumanızı öneririz.
Komut satırında ve Python’da her adrese bağlanılır. Tarayıcıda (oyun alanı, paketlenmiş uygulamalar) yalnızca buna izin veren sitelere (CORS) bağlanılır ve zaman aşımı uygulanmaz.