requests — לקוח HTTP#
המודול requests מספק API מינימלי של לקוח HTTP/HTTPS הדומה לספריית Python requests. כל פונקציית בקשה מחזירה אובייקט requests.Response.
דוגמה:
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())
מחלקת Response#
- class requests.Response(code: int, reason: str, headers: bytes = None, content: bytes = None)#
מייצגת תגובת HTTP. מופעים מוחזרים על ידי
requests.requestועל ידי פונקציות העזר לכל שיטה.- encoding: str#
קידוד המחרוזת המשמש לפענוח
requests.Response.headersו-requests.Response.content. ברירת המחדל היא"utf-8".
- headers: str#
כותרות התגובה מפוענחות עם
requests.Response.encodingומוחזרות כ-str.
- content: str#
גוף התגובה מפוענח עם
requests.Response.encodingומוחזר כ-str.
- json() dict#
ניתוח
requests.Response.contentכ-JSON והחזרת האובייקט המתקבל.
פונקציות#
- 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#
שליחת בקשת HTTP אל
urlוהחזרתrequests.Response.method— שיטת HTTP כ-str(למשל"GET","POST").url— כתובת URL היעד. חייבת להתחיל ב-http://אוhttps://.data— גוף הבקשה הגולמי.strמקודד ב-UTF-8 לפני השליחה. אם הוגדר,Content-Lengthמתווסף אוטומטית.json— אובייקט המסוריאליז ל-JSON ונשלח כגוף. מגדירContent-Type: application/json.files— מילון הממפה שם שדה ל-tuple מסוג(filename, fileobj). נשלח כ-multipart/form-data.headers— מילון של כותרות בקשה נוספות. המילון מועתק, כך שהמילון של הקורא לעולם אינו משתנה (וכותרתAuthorizationשנוספה עבורauthאינה דולפת לבקשות מאוחרות יותר שעושות בו שימוש חוזר).auth— tuple מסוג(username, password)עבור אימות HTTP Basic.stream— מתקבל לצורך תאימות API; אינו בשימוש.timeout— פסק זמן של השקע בשניות, המוחל לאחר שהחיבור נוצר. ברירת המחדל היא5.0; העבירוNoneכדי לחסום ללא הגבלה. עם פקיעתו מתעוררתOSError.
תגובות הנשלחות עם
Transfer-Encoding: chunkedמפוענחות באופן שקוף, כך ש-requests.Response.contentתמיד מכיל את הגוף לאחר פירוק המקטעים. כותרות התגובה מותאמות ללא תלות ברישיות. הפניות מחדש אינן נעקבות: תגובת 3xx עם כותרתLocationמעוררתNotImplementedError.
- requests.head(url: str, **kw: Any) Response#
שליחת בקשת
HEADשל HTTP והחזרתResponse.HEADזהה ל-GETלמעט זאת שהשרת משיב בשורת המצב ובכותרות בלבד; הגוף ריק. השתמש בה כדי לבדוק אם משאב קיים, לבחוןContent-Length/Content-Typeללא הורדת ה-payload, או לבחון URL לפני הנפקתGETכבד יותר.ארגומנטים:
url– כתובת URL היעד; חייבת להתחיל ב-http://אוhttps://.headers(kwarg) – מילון של כותרות בקשה נוספות.auth(kwarg) – tuple מסוג(username, password)עבור אימות HTTP Basic.
data/json/files/streamמ-request()מתקבלים לשם שלמות אך לעיתים נדירות הגיוניים עבורHEAD.
- requests.get(url: str, **kw: Any) Response#
שליחת בקשת
GETשל HTTP והחזרתResponse.GETהוא הפועל הסטנדרטי לאחזור ייצוג של המשאב המזוהה על ידיurl. הוא בטוח (אינו גורם לשינוי מצב בצד השרת) ואידמפוטנטי.ארגומנטים:
url– כתובת URL היעד; חייבת להתחיל ב-http://אוhttps://.headers(kwarg) – מילון של כותרות בקשה נוספות (לדוגמהAuthorizationאוAccept).auth(kwarg) – tuple מסוג(username, password)עבור אימות HTTP Basic.timeout(kwarg) – פסק זמן של השקע בשניות (ברירת מחדל5.0).
גוף בקשה באמצעות
data/jsonמותר על ידיrequest()הבסיסי אך מתעלמים ממנו רוב השרתים.
- requests.post(url: str, **kw: Any) Response#
שליחת בקשת
POSTשל HTTP והחזרתResponse.POSTמגיש נתונים אלurl, בדרך כלל יוצר משאב כפוף חדש, מפעיל הגשת טופס או מפעיל פעולה. הוא אינו בטוח ואינו אידמפוטנטי: קריאות חוזרות עשויות ליצור משאבים כפולים.ארגומנטים:
url– כתובת URL היעד; חייבת להתחיל ב-http://אוhttps://.data(kwarg) – גוף בקשה גולמי (דמויbytes). שולח כותרתContent-Lengthאוטומטית.json(kwarg) – אובייקט המסוריאליז ל-JSON ונשלח כגוף. מגדירContent-Type: application/json.files(kwarg) – מילון הממפה שם שדה ל-(filename, fileobj). נשלח כ-multipart/form-data.headers(kwarg) – מילון של כותרות בקשה נוספות.auth(kwarg) – tuple מסוג(username, password)עבור אימות HTTP Basic.timeout(kwarg) – פסק זמן של השקע בשניות (ברירת מחדל5.0). הגדילו אותו עבור נקודות קצה איטיות כגון ממשקי API של LLM.
העבר לכל היותר אחד מבין
data/json/files.
- requests.put(url: str, **kw: Any) Response#
שליחת בקשת
PUTשל HTTP והחזרתResponse.PUTמחליף את המשאב ב-urlבייצוג שסופק, ויוצר אותו אם אינו קיים. הוא אידמפוטנטי: חזרה עלPUTזהה מניבה את אותו מצב סופי.ארגומנטים:
url– כתובת URL היעד; חייבת להתחיל ב-http://אוhttps://.data(kwarg) – גוף החלפה גולמי (דמויbytes).json(kwarg) – אובייקט המסוריאליז ל-JSON ונשלח כגוף ההחלפה. מגדירContent-Type: application/json.headers(kwarg) – מילון של כותרות בקשה נוספות.auth(kwarg) – tuple מסוג(username, password)עבור אימות HTTP Basic.
העבר
dataאוjsonכדי לשאת את הייצוג החדש.
- requests.patch(url: str, **kw: Any) Response#
שליחת בקשת
PATCHשל HTTP והחזרתResponse.PATCHמחיל שינוי חלקי על המשאב ב-url– רק השדות הכלולים בגוף הבקשה משתנים. בניגוד ל-PUT, אין דרישה שיהיה אידמפוטנטי (אם כי ממשקי API רבים עושים אותו ככזה).ארגומנטים:
url– כתובת URL היעד; חייבת להתחיל ב-http://אוhttps://.data(kwarg) – גוף דלתא גולמי (דמויbytes). הפורמט תלוי בשרת (למשל JSON Patch, JSON Merge Patch).json(kwarg) – אובייקט דלתא המסוריאליז ל-JSON. מגדירContent-Type: application/json.headers(kwarg) – מילון של כותרות בקשה נוספות.auth(kwarg) – tuple מסוג(username, password)עבור אימות HTTP Basic.
- requests.delete(url: str, **kw: Any) Response#
שליחת בקשת
DELETEשל HTTP והחזרתResponse.DELETEמבקש הסרה של המשאב ב-url. הוא אידמפוטנטי: מחיקת משאב שכבר נמחק אינה שגיאה (השרת בדרך כלל מחזיר 404, אך המצב הסופי זהה).ארגומנטים:
url– כתובת URL היעד; חייבת להתחיל ב-http://אוhttps://.headers(kwarg) – מילון של כותרות בקשה נוספות.auth(kwarg) – tuple מסוג(username, password)עבור אימות HTTP Basic.
גוף באמצעות
data/jsonמותר על ידיrequest()הבסיסי אך לעיתים נדירות בשימוש עםDELETE.