Treci la conținutul principal

Cealaltă parte a API-ului

Programele Python nu sunt doar servere — ele apelează și API-uri: obțin date, comunică cu servicii, se integrează cu terți. Modulul urllib.request din biblioteca standard înseamnă trei obiceiuri:

1. faci cererea (urlopen pentru un GET simplu, un obiect Request pentru control complet asupra metodei, antetelor și corpului),
2. deschizi răspunsul într-un bloc with, ca să fie mereu închis,
3. ții minte că un răspuns 4xx sau 5xx ridică HTTPError — prinde această excepție acolo unde un cod de stare greșit este un caz pe care îl tratezi.

Demonstrațiile de mai jos apelează un server local de test, așa că ieșirile sunt stabile — codul clientului este exact cel pe care l-ai îndrepta spre un URL real. (Popularul pachet requests din ecosistem împachetează aceleași idei într-un API mai prietenos; tot ce este aici rămâne în biblioteca standard.)


GET și decodare

Sarcina de zi cu zi: faci GET la un URL și decodezi corpul JSON. json.loads(resp.read()) dă date Python simple, iar o clasă de date (dataclass) transformă fiecare dicționar într-o înregistrare cu tipuri, cu User(**item).

Obține o listă de înregistrări

Corpul răspunsului este parsat într-o listă de înregistrări User, iar de acolo sunt date Python obișnuite — parcurse într-o buclă și afișate câmp cu câmp.

Prompt
Scrie un program Python care face GET pentru un tablou JSON de utilizatori de la un server (un server demonstrativ local în același fișier), parsează corpul cu json.loads, construiește din el o listă de clase de date User și afișează id-ul și numele fiecărui utilizator.
Ieșire: program Python complet

POST cu un corp JSON

Trimiterea datelor este imaginea în oglindă: transformi înregistrarea în octeți JSON, îi trimiți prin POST cu tipul de conținut potrivit — apoi parsezi răspunsul serverului, care aici conține id-ul atribuit de server.

Trimite o înregistrare, citește răspunsul

Înregistrarea pleacă sub formă de JSON și se întoarce utilizatorul creat, User(id=7, name='Cleo') — întregul drum de scriere al unui client API într-un singur program mic.

Prompt
Scrie un program Python care transformă în JSON o nouă clasă de date User, o trimite prin POST cu tipul de conținut application/json către un server care atribuie un id și răspunde cu 201 (un server demonstrativ local în același fișier), apoi parsează răspunsul și afișează codul de stare și utilizatorul creat cu noul său id.
Ieșire: program Python complet