אולי שמעתם על בקשות GET ו-POST, אבל הן רק ההתחלה.
כל בקשת HTTP משתמשת בשיטה כדי לתאר את מטרתה המהותית. לכל שיטה יש שימושים ספציפיים למשימות, החל מאחזור דף אינטרנט ועד למחיקת משאב. GET ו-POST הם השניים המוכרים ביותר, אבל יש שבעה אחרים.
למד על מושג זה ולמה מיועדת כל אחת מתשע שיטות ה-HTTP האפשריות.
מהי שיטת HTTP?
כל בקשת HTTP שתבצע כוללת פעולה ויעד לפעולה זו, בדומה לפועל ושם עצם הפועלים כאובייקט.
כתובת האתר מזהה משאב ייחודי, שפועל כיעד הבקשה. בינתיים, הפועל - איזו פעולה לבצע בכתובת ה-URL הזו - מיוצג על ידי שיטה.
השורה הראשונה של בקשת HTTP מספקת את המידע המשמעותי ביותר כולל גרסת HTTP, כתובת האתר של המשאב ושיטת הבקשה:
קבל /software/htp/cics/index.html HTTP/1.1
מהן 9 שיטות HTTP?
ארבע השיטות הראשונות מקבילות לארבע הפעולות ממודל CRUD: יצירה, קריאה, עדכון ומחק. שיטות ה-HTTP המתאימות הן הודעה, לקבל, לָשִׂים, ו לִמְחוֹק.
לקבל
בקשת ברירת המחדל הנפוצה ביותר שתשלח בעת גלישה באינטרנט ולחיצה על קישורים או בקשת נתונים באמצעות API. השרת צריך להחזיר את המשאב בגוף התגובה שלו.
הודעה
השתמש ב-POST כדי ליצור משאבים חדשים, במיוחד כאשר למשאבים אלה יש משאב אב שניתן לזהות. לדוגמה, אם יש לך משאב /clients, עליך ליצור לקוח חדש על ידי פרסום הנתונים הנדרשים ל- /clients.
לָשִׂים
עדכן או החלף משאב קיים. זה דומה ל-POST, אך הלקוח אחראי לבחירת מזהה ייחודי עבור המשאב. כדי ליצור משאב באמצעות PUT, כתובת האתר של המשאב צריכה לכלול מזהה, לדוגמה, /clients/007.
לִמְחוֹק
השתמש בשיטה זו כדי למחוק את המשאב שאתה מציין בכתובת האתר. כמו כל שיטות HTTP, התמיכה היא רק בשרת. זה עשוי לאפשר לכל אחד למחוק משאב, אם כי ברור שזה יהיה מסוכן. שרת שתומך ב-DELETE ידרוש בדרך כלל אימות והרשאה.
שתי שיטות אחרות מספקות שינויים קלים על האמור לעיל: תיקון ו רֹאשׁ. אתה עשוי למצוא אותם שימושיים בעת שימוש בממשקי API מסוימים או אם אתה בונה משלך.
תיקון
שיטת PATCH מעדכנת משאב קיים, עם נתונים חלקיים בלבד. במילים אחרות, אינך צריך לספק את הייצוג המלא של המשאב החדש, אלא רק את השדות שאתה צריך לעדכן.
רֹאשׁ
בקשת HEAD מיועדת כאשר אתה רוצה מידע על משאב, אך לא על המשאב עצמו. התגובה לא תכלול גוף, אבל היא תכיל קבוצה של כותרות HTTP שימושיות. אתה יכול לברר את הגודל הכולל של קובץ לפני שאתה מוריד אותו, דרך כותרת התגובה Content-Length.
השיטות הנותרות-אפשרויות, לְחַבֵּר, ו זֵכֶר- סתומים יותר. הם עוסקים במטא נתונים, רשתות ופתרון בעיות. אולי תמצא אותם שימושיים בסוגים מסוימים של תכנות, אבל כנראה שלא תשתמש בהם כל יום.
אפשרויות
שרת צריך להגיב לשיטה זו בכך שיגיד לך באילו שיטות HTTP המשאב תומך בפועל. זה יכול להיות שימושי לגילוי.
לְחַבֵּר
סוגים מסוימים של תוכנות רשת עשויים להשתמש בשיטה זו כדי ליצור מנהרה בין שני מחשבים. זה משמש לעתים קרובות כדי ליזום חיבור HTTPS באמצעות פרוקסי.
זֵכֶר
שיטה זו שימושית לפתרון בעיות. עם קבלתו, על השרת לשלוח בחזרה את הבקשה שקיבל בגוף התגובה. השיטה מספקת מנגנון לבדיקה האם מכונות ביניים שינו פרט כלשהו של הבקשה.
GET ו-HEAD הן שתי השיטות היחידות שכל שרת אינטרנט כללי תומך בהן. שרת מסוים עשוי לתמוך בשיטות אחרות או לא, לכן עליך לבדוק תחילה.
מתי אתה יכול להשתמש בשיטות אלה?
רוב הזמן, שיטות HTTP יהיו שקופות עבורך. עם זאת, תצטרך לשקול אותם אם אתה מוסיף טופס לדף אינטרנט או משתמש ב-API.
שיטות HTTP ב-HTML
ה טופס אלמנטים שיטה תכונה מאפשרת לך להגדיר את שיטת ה-HTTP לשימוש כאשר הטופס יישלח. HTML תומך רק ב- הודעה ו לקבל ערכים עבור תכונה זו - בתוספת אלטרנטיבה דו-שיח לא ברורה.
<טופסשיטה="הודעה">
...
טופס>
אתה יכול להשתמש בתכונות כמו כלי המפתחים של Chrome לצפות רֶשֶׁת תעבור ואשר את השיטה שהדפדפן שלך שולח עבור בקשה מסוימת. שים לב שרוב טפסי האינטרנט ישלחו POST מכיוון שהם בדרך כלל מעדכנים נתונים בשרת. עם זאת, טפסי חיפוש רבים משתמשים ב-GET מכיוון שהם פשוט מביאים נתונים מבלי לשנות אותם.
מכיוון שנתוני POST אינם חלק מכתובת האתר, הם פרטיים יותר מאשר אם אתה שולח אותם באמצעות GET. הנתונים עדיין קיימים בגוף הבקשה שבו, בתיאוריה, תוקף עלול ליירט אותם. אבל שליחת נתונים באמצעות HTTPS אמורה להקל על בעיה זו.
לעולם אל תטמיע התחברות משתמש עם בקשות GET. למרות שכניסה עשויה להיראות יותר כמו פעולת קריאה מאשר יצירה או עדכון, עדיין עליך להשתמש ב-POST כדי לאבטח את הנתונים.
מכיוון שטופסי HTML תומכים רק ב-GET וב-POST, אינך יכול ליצור ישירות טופס שמוחק, למשל, משאב בשרת. פתרון נפוץ, המכבד את עקרונות ה-REST בשרת, הוא להשתמש במשתנה מציין מיקום ולהעמיד פנים שזו הייתה שיטת ה-HTTP המקורית. לדוגמה:
<טופסשיטה="הודעה">
<קֶלֶטסוּג="מוּסתָר"שֵׁם="_שיטה"ערך="לִמְחוֹק" />
...
טופס>
הקוד בצד השרת שלך יכול לבדוק את נוכחותו של משתנה 'שיטת פרוקסי' זה ולהתייחס אליו כאילו הוא השיטה האמיתית שבה נעשה שימוש. לדוגמה, ב-PHP:
$method = $_SERVER["REQUEST_METHOD"];
אם (מפתח_מערך_קיים("_שיטה", $_REQUEST)) {
$method = $_REQUEST["_שיטה"];
}
שליחת בקשות HTTP באופן פרוגרמטי
ה-Web Fetch API מספק פונקציית JavaScript () fetch שבה אתה יכול להשתמש כדי לשלוח בקשת HTTP. הוא תומך בכל מגוון השיטות, לא רק ב-GET וב-POST ש-HTML תומך בהם.
פונקציית האחזור תשלח בקשת GET כברירת מחדל. כדי להשתמש בשיטה אחרת, ציין את שמה כערך עבור a שיטה מאפיין באובייקט שאתה שולח כארגומנט השני.
לְהָבִיא(' https://example.com/', { שיטה: "רֹאשׁ" });
אתה יכול גם לשלוח בקשות HTTP משפות רבות בצד השרת, כולל PHP. בשפה זו, ספריית התלתלים היא דרך נפוצה לשלוח בקשות כאלה.
לספריית התלתלים יש אפשרות CURLOPT_CUSTOMREQUEST שתוכל להגדיר לציון שיטה
אם ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'לָשִׂים');
curl_exec($ch);
// ...
}
דרך שורת הפקודה
כלי שורת הפקודה סלסול מאפשר לך להעביר נתונים לשרת או ממנו, באמצעות אחד מכמה פרוטוקולים. HTTP (ו-HTTPS) הם שני מקרי שימוש נפוצים מאוד.
כברירת מחדל, curl שולח בקשת GET, כפי שאתה יכול לאשר באמצעות הפקודה הבאה:
curl -v -s -o /dev/null example.com/get-test
אתה יכול לראות את שיטת הבקשה בשורה החמישית של הפלט:
אתה יכול לשנות את שיטת הבקשה ש-Curl שולח באמצעות דגל -X:
curl -v -s -o /dev/null example.com/get-test -X POST
כעת, curl שולח בקשה בשיטת POST:
ל-HTTP שימושים רבים
רוב מה שאתה עושה באינטרנט יכלול בקשות GET סטנדרטיות, עם POST מדי פעם להגשת טפסים. אבל HTTP הוא פרוטוקול הרבה יותר אקספרסיבי ממה שמציע.
כמה מהשיטות הנפוצות ביותר משקפות את מודל ה-CRUD שהופך את HTTP לבסיס מצוין לבניית API ממוקד משאבים.