Sobes.tech
Middle

Hogyan valósítható meg a várakozás (wait) az API-hoz?

sobes.tech MI

Válasz az MI-től

Az API teszteléséhez olyan egyértelmű elvárásokat használnak, amelyek feltételeken alapulnak. A leggyakoribb módszerek:

  1. Polling (kérdezés): Rendszeres kérés az API-hoz, amíg a várt eredményt el nem érik vagy a timeout lejár.

    import time
    import requests
    
    def wait_for_status(url, expected_status, timeout=30, interval=1):
        """
        Egy adott státuszt vár az API-tól.
    
        Args:
            url: Az API végpontjának URL-je.
            expected_status: Várt HTTP státuszkód.
            timeout: Maximális várakozási idő másodpercben.
            interval: Kísérletek közötti időintervallum másodpercben.
    
        Returns:
            requests.Response: Válaszobjektum siker esetén, None timeout esetén.
        """
        start_time = time.time()
        while time.time() - start_time < timeout:
            try:
                response = requests.get(url)  # Vagy más HTTP módszer
                if response.status_code == expected_status:
                    return response
            except requests.exceptions.RequestException as e:
                print(f"Hiba a kérés során: {e}") # Hiba naplózása
            time.sleep(interval)
        return None # Timeout esetén None
    
    # Használati példa
    # api_url = "http://example.com/api/resource"
    # expected_status_code = 200
    # response = wait_for_status(api_url, expected_status_code)
    # if response:
    #     print("Várt státusz megkapva!")
    # else:
    #     print("Timeout a státusz várakozásakor.")
    
  2. Long polling (hosszú kérés): A kliens kér egy választ, és a szerver nyitva tartja a kapcsolatot, amíg adatok nem érkeznek vagy a timeout lejár. Kevésbé gyakori a standard REST API-kban, inkább eseményalapú vagy WebSocket architektúrákban.

  3. Webhooks (visszahívások): Az API meghív egy megadott URL-t a kliens oldalán, amikor egy adott esemény megtörténik. Nyilvánosan elérhető végpont szükséges a webhook fogadásához.

    • Implementáció:
      • Webhook URL regisztrálása egy másik szolgáltatás API-ján keresztül.
      • Kód írása a kliens oldalon a webhook HTTP POST kérésének fogadására és feldolgozására.
      • Általában aszinkron módon várja az adatok fogadását a webhookon keresztül.

A módszer kiválasztása az API architektúrájától és a tesztelési követelményektől függ. A polling a legelterjedtebb és legegyszerűbb módszer a legtöbb REST API esetében.