Middle
Kuidas rakendada ootamist (wait) API jaoks?
sobes.tech AI
Vastus AI-lt
API testimiseks kasutatakse tingimustele põhinevaid selgeid ootusi. Kõige levinumad meetodid:
-
** polling ** (küsitlus): Perioodiline päring API-le kuni oodatud tulemuse saamiseni või ajapiirangu lõppemiseni.
import time import requests def wait_for_status(url, expected_status, timeout=30, interval=1): """ Ootab kindlat staatust API-lt. Args: url: API lõpp-punkti URL. expected_status: Oodatud HTTP staatuse kood. timeout: Maksimaalne ootamise aeg sekundites. interval: Vahemaa katsete vahel sekundites. Returns: requests.Response: Vastuse objekt õnnestumise korral, None ajapiirangu lõppedes. """ start_time = time.time() while time.time() - start_time < timeout: try: response = requests.get(url) # Või muu HTTP meetod if response.status_code == expected_status: return response except requests.exceptions.RequestException as e: print(f"Viga päringus: {e}") # Päringu vea logimine time.sleep(interval) return None # Tagastame None ajapiirangu lõppedes # Näide kasutamisest # api_url = "http://example.com/api/resource" # expected_status_code = 200 # response = wait_for_status(api_url, expected_status_code) # kui response: # print("Oodatud staatus saadud!") # else: # print("Aja piirang lõppes ootamise ajal.") -
** long polling ** (pikk küsitlus): Klient saadab päringu ja server hoiab ühenduse avatud kuni andmed ilmuvad või aeg lõppeb.
-
** Webhooks ** (tagasikutsed): API kutsub määratud URL-i kliendi poole, kui toimub teatud sündmus. See nõuab avalikult kättesaadava lõpp-punkti olemasolu kliendi poole Webhooki vastuvõtmiseks.
- Rakendamine:
- Webhooki URL-i registreerimine teise teenuse API kaudu.
- Koodi kirjutamine kliendi poole, et vastu võtta ja töödelda HTTP POST-päringuid Webhookist.
- Ootamine (enamasti asünkroonne) andmete saamiseks Webhooki kaudu.
- Rakendamine:
Meetodi valik sõltub API arhitektuurist ja testi nõuetest. Polling on kõige levinum ja lihtsaim realiseerida enamikul REST API-del.