requests — Client HTTP#
Modulul requests oferă o API minimă de client HTTP/HTTPS similară cu biblioteca Python requests. Fiecare funcție de cerere returnează un obiect requests.Response.
Exemplu:
import requests
# GET a JSON resource.
r = requests.get("https://httpbin.org/get")
print(r.status_code, r.reason)
print(r.json())
# POST JSON.
r = requests.post(
"https://httpbin.org/post",
json={"id": 1, "value": 42},
headers={"X-Source": "openmv"},
)
print(r.json())
Clasa Response#
- class requests.Response(code: int, reason: str, headers: bytes = None, content: bytes = None)#
Reprezintă un răspuns HTTP. Instanțele sunt returnate de
requests.requestși de funcțiile ajutătoare pentru fiecare metodă.- encoding: str#
Codificarea șirului folosită pentru a decoda
requests.Response.headersșirequests.Response.content. Implicit"utf-8".
- headers: str#
Antetele răspunsului decodate cu
requests.Response.encodingși returnate castr.
- content: str#
Corpul răspunsului decodat cu
requests.Response.encodingși returnat castr.
- json() dict#
Analizează
requests.Response.contentca JSON și returnează obiectul rezultat.
Funcții#
- requests.request(method: str, url: str, data: bytes | str | None = None, json: Any | None = None, files: dict | None = None, headers: dict | None = None, auth: tuple | None = None, stream: Any | None = None, timeout: float | None = 5.0) Response#
Trimite o cerere HTTP către
urlși returnează unrequests.Response.method— metoda HTTP castr(de exemplu"GET","POST").url— URL-ul țintă. Trebuie să înceapă cuhttp://sauhttps://.data— Corpul brut al cererii. Unstreste codificat UTF-8 înainte de trimitere. Dacă este setat,Content-Lengtheste adăugat automat.json— obiect serializat în JSON și trimis ca corp. SeteazăContent-Type: application/json.files— dicționar care mapează numele câmpului la un tuplu(filename, fileobj). Trimis camultipart/form-data.headers— Dicționar de antete suplimentare ale cererii. Dicționarul este copiat, astfel încât dicționarul apelantului nu este niciodată modificat (iar un antetAuthorizationadăugat pentruauthnu se scurge în cererile ulterioare care îl refolosesc).auth— tuplu(username, password)pentru autentificarea HTTP Basic.stream— acceptat pentru compatibilitate cu API-ul; nu este folosit.timeout— Timeout-ul socket-ului în secunde, aplicat după ce conexiunea este stabilită. Implicit5.0; transmitețiNonepentru a bloca la nesfârșit. La expirare este ridicată o excepțieOSError.
Răspunsurile trimise cu
Transfer-Encoding: chunkedsunt decodate transparent, astfel încâtrequests.Response.contentconține întotdeauna corpul reasamblat. Antetele răspunsului sunt potrivite fără a ține cont de majuscule/minuscule. Redirecționările nu sunt urmate: un răspuns 3xx cu un antetLocationridicăNotImplementedError.
- requests.head(url: str, **kw: Any) Response#
Trimite o cerere HTTP
HEADși returnează unResponse.HEADeste identic cuGETcu excepția faptului că serverul răspunde doar cu linia de stare și antetele; corpul este gol. Folosește-l pentru a verifica dacă o resursă există, pentru a inspectaContent-Length/Content-Typefără a descărca încărcătura utilă, sau pentru a sonda un URL înainte de a emite unGETmai costisitor.Argumente:
url– URL-ul țintă; trebuie să înceapă cuhttp://sauhttps://.headers(kwarg) – dicționar de antete suplimentare ale cererii.auth(kwarg) – tuplu(username, password)pentru autentificarea HTTP Basic.
data/json/files/streamdinrequest()sunt acceptate pentru completitudine, dar rareori au sens pentruHEAD.
- requests.get(url: str, **kw: Any) Response#
Trimite o cerere HTTP
GETși returnează unResponse.GETeste verbul standard pentru recuperarea unei reprezentări a resursei identificate deurl. Este sigur (nu provoacă nicio modificare de stare pe partea serverului) și idempotent.Argumente:
url– URL-ul țintă; trebuie să înceapă cuhttp://sauhttps://.headers(kwarg) – dicționar de antete suplimentare ale cererii (de exempluAuthorizationsauAccept).auth(kwarg) – tuplu(username, password)pentru autentificarea HTTP Basic.timeout(kwarg) – timeout-ul socket-ului în secunde (implicit5.0).
Un corp de cerere prin
data/jsoneste permis de funcția subiacentărequest(), dar ignorat de majoritatea serverelor.
- requests.post(url: str, **kw: Any) Response#
Trimite o cerere HTTP
POSTși returnează unResponse.POSTtrimite date cătreurl, de obicei creând o nouă resursă subordonată, declanșând trimiterea unui formular sau invocând o acțiune. Nu este nici sigur, nici idempotent: apelurile repetate pot crea resurse duplicate.Argumente:
url– URL-ul țintă; trebuie să înceapă cuhttp://sauhttps://.data(kwarg) – corpul brut al cererii (de tipbytes). Trimite automat un antetContent-Length.json(kwarg) – obiect serializat în JSON și trimis ca corp. SeteazăContent-Type: application/json.files(kwarg) – dicționar care mapează un nume de câmp la(filename, fileobj). Trimis camultipart/form-data.headers(kwarg) – dicționar de antete suplimentare ale cererii.auth(kwarg) – tuplu(username, password)pentru autentificarea HTTP Basic.timeout(kwarg) – timeout-ul socket-ului în secunde (implicit5.0). Măriți-l pentru puncte finale lente, cum ar fi API-urile LLM.
Transmite cel mult unul dintre
data/json/files.
- requests.put(url: str, **kw: Any) Response#
Trimite o cerere HTTP
PUTși returnează unResponse.PUTînlocuiește resursa de laurlcu reprezentarea furnizată, creând-o dacă nu există. Este idempotent: repetarea unuiPUTidentic produce aceeași stare finală.Argumente:
url– URL-ul țintă; trebuie să înceapă cuhttp://sauhttps://.data(kwarg) – corpul brut de înlocuire (de tipbytes).json(kwarg) – obiect serializat în JSON și trimis ca corp de înlocuire. SeteazăContent-Type: application/json.headers(kwarg) – dicționar de antete suplimentare ale cererii.auth(kwarg) – tuplu(username, password)pentru autentificarea HTTP Basic.
Transmite fie
data, fiejsonpentru a purta noua reprezentare.
- requests.patch(url: str, **kw: Any) Response#
Trimite o cerere HTTP
PATCHși returnează unResponse.PATCHaplică o modificare parțială asupra resursei de laurl– doar câmpurile conținute în corpul cererii se modifică. Spre deosebire dePUT, nu este obligatoriu să fie idempotent (deși multe API-uri îl fac astfel).Argumente:
url– URL-ul țintă; trebuie să înceapă cuhttp://sauhttps://.data(kwarg) – corpul brut delta (de tipbytes). Formatul depinde de server (de exemplu JSON Patch, JSON Merge Patch).json(kwarg) – obiect delta serializat în JSON. SeteazăContent-Type: application/json.headers(kwarg) – dicționar de antete suplimentare ale cererii.auth(kwarg) – tuplu(username, password)pentru autentificarea HTTP Basic.
- requests.delete(url: str, **kw: Any) Response#
Trimite o cerere HTTP
DELETEși returnează unResponse.DELETEsolicită eliminarea resursei de laurl. Este idempotent: ștergerea unei resurse deja șterse nu este o eroare (serverul returnează de obicei un 404, dar starea finală este aceeași).Argumente:
url– URL-ul țintă; trebuie să înceapă cuhttp://sauhttps://.headers(kwarg) – dicționar de antete suplimentare ale cererii.auth(kwarg) – tuplu(username, password)pentru autentificarea HTTP Basic.
Un corp prin
data/jsoneste permis de funcția subiacentărequest(), dar rareori folosit cuDELETE.