Özet - HTTP ve aiohttp
- Python kursu
- İleri seviye
- Ders 42/83
- 5 dk
ClientSession, get ve json'ı birleştirerek bir hava durumu istemcisi yazarsın.
Özet - HTTP ve aiohttp
Bu grupta HTTP isteklerini öğrendin. urllib.request ile senkron, aiohttp.ClientSession ile asenktron istek yaparsın. session.get ve session.post ile farklı istek türleri, await resp.text() ile gövde, json.loads ile yapısal veri ayrıştırılır.
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
data = json.loads(await resp.text())Son adımda tüm bunları birleştirerek bir hava durumu istemcisi yazacaksın.
Uygulama Hava durumu istemcisi
import asyncio, import aiohttp ve import json ile başla. async def main() içinde async with aiohttp.ClientSession() as session: aç. async with session.get("https://example.com") as resp: ile GET isteği yap. text = await resp.text() ile gövdeyi al. data = json.loads(text) ile sözlüğe çevir. print(data["sehir"]) ile şehri yazdır. asyncio.run(main()) ekle.
Başlangıç kodu
# asyncio, aiohttp ve yapısal veri modülünü içe aktar
# async with ile bir oturum aç
# oturum üzerinde get ile bir istek yap
# await ile gövdeyi al ve yapısal veri modülünün loads fonksiyonu ile sözlüğe çevir
# sözlükten sehir değerini yazdır
# asyncio.run ile main'i çalıştırÖrnek çözüm
import asyncio
import aiohttp
import json
class _S:
async def __aenter__(self): return self
async def __aexit__(self, *a): return False
def get(self, url): return self
async def text(self): return '{"sehir": "İstanbul"}'
aiohttp.ClientSession = _S
async def main():
async with aiohttp.ClientSession() as session:
async with session.get('https://example.com') as resp:
text = await resp.text()
data = json.loads(text)
print(data['sehir'])
asyncio.run(main())Beklenen çıktı
İstanbul
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yanıt gövdesini yapısal veri olarak ayrıştıran fonksiyon hangisi?
- urlopen
- json.loads Doğru cevap
- session.get
- asyncio.run
Açıklama: json.loads(dize) yapısal veriyi sözlüğe çevirir.
2 Grup araçlarını eşleştir
| Kavram | Anlamı |
|---|---|
urllib.request |
Senkron istek |
aiohttp.ClientSession |
Asenktron oturum |
session.get |
GET isteği |
json.loads |
Yapısal veri ayrıştırır |