CodeBlanks Logo Icon CodeBlanks

Özet - HTTP ve aiohttp

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

main.py
# 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

main.py
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

İleri seviye bölümündeki tüm dersler