מה זה curl ולמה כל מתכנת צריך להכיר אותו¶
יש כלים שאתם לומדים כי מישהו אמר לכם שכדאי, ויש כלים שברגע שאתם צריכים אותם פעם אחת, אתם משתמשים בהם כל שבוע במשך שארית הקריירה. curl הוא בדיוק מהסוג השני. זו פקודה קטנה שמריצים בטרמינל, אבל היא אחד הכלים הכי שימושיים שקיימים למי שעובד עם אינטרנט, כלומר - כל מתכנת.
אז מה זה curl בעצם¶
curl היא תוכנת שורת פקודה ששולחת בקשות ברשת ומקבלת תשובה. הכי נפוץ להשתמש בה עם HTTP ו-HTTPS, כלומר בדיוק אותו סוג בקשות שהדפדפן שלכם שולח כל הזמן, רק שכאן אתם שולטים בהן ישירות מהטרמינל, בלי ממשק גרפי.
הרעיון הבסיסי הוא שבמקום לפתוח דפדפן כדי לבדוק אם שרת מגיב, או לפתוח כלי ייעודי כדי לבדוק API, אתם פשוט כותבים שורה אחת בטרמינל, ומקבלים בדיוק את מה שהשרת מחזיר. זה כלי חינמי, קוד פתוח, ומותקן כמעט בכל מערכת הפעלה כברירת מחדל.
הפקודות הבסיסיות שכדאי להכיר¶
בקשת GET פשוטה היא הכי בסיסית - curl https://example.com שולחת בקשה ומדפיסה את התשובה ישר למסך. משם אפשר להוסיף עוד יכולות:
- שליחת בקשת POST עם
-X POST, בשילוב עם-dכדי לשלוח נתונים בגוף הבקשה. - שליחת גוף JSON - משלבים
-H "Content-Type: application/json"עם-d '{"key": "value"}'כדי לדמות בדיוק בקשת API אמיתית. - הוספת כותרות - headers עם
-H, למשל כדי לשלוח טוקן הרשאה בכותרת Authorization. - מעקב אחרי הפניות - redirects עם
-L, כי כברירת מחדל curl לא עוקב אחרי כתובת שמפנה לכתובת אחרת. - שמירת התוצאה לקובץ עם
-o filename, שימושי מאוד כשרוצים להוריד קובץ ישירות משרת. - הצגת מידע מלא על הבקשה והתשובה עם
-v(verbose), שמראה בדיוק אילו כותרות נשלחו והתקבלו - כלי אבחון מעולה כשמשהו לא עובד כמו שציפיתם.
למה זה כל כך שימושי לניפוי באגים¶
תארו לעצמכם שאתם מפתחים API ומשהו לא עובד. אתם יכולים לפתוח דפדפן, להתקין תוסף, לפתוח Postman ולחכות שהוא ייטען - או פשוט לכתוב שורת curl אחת ולראות בדיוק מה חוזר מהשרת, כולל קוד הסטטוס, הכותרות, וגוף התשובה. אין שכבות אמצע, אין ממשק גרפי שיכול "לעזור" ולהסתיר לכם משהו. מה שהשרת שלח, זה מה שאתם רואים.
זו הסיבה ש-curl הוא הכלי שאליו מגיעים כשמנסים להבין למה בקשה נכשלת בפרודקשן, למה שרת מחזיר קוד שגיאה מוזר, או פשוט לוודא שנקודת קצה - endpoint - בכלל מגיבה.
למה זה חיוני גם בסקריפטים ובפייפליינים¶
מעבר לניפוי באגים ידני, curl הוא כלי שמשלבים בתוך סקריפטים ובתהליכי CI/CD. רוצים לבדוק שהשרת שלכם באוויר אחרי דיפלוי? שורת curl בסקריפט בדיקה בריאות. רוצים להוריד קובץ תצורה משרת חיצוני כחלק מתהליך build? curl. רוצים לשלוח הודעה לערוץ Slack דרך webhook כשבנייה נכשלת? גם זה, שורת curl אחת.
בגלל ש-curl מותקן כמעט בכל מקום - שרתי לינוקס, מכולות Docker, סביבות CI - אפשר לסמוך עליו שיהיה שם, בלי להתקין תלויות נוספות. זו סיבה גדולה לכך שהוא נשאר רלוונטי אחרי עשרות שנים, למרות שקיימים כלים גרפיים נוחים בהרבה.
אז אני צריך את זה גם אם אני משתמש ב-Postman¶
כן, ותשובה קצרה מדוע - Postman ו-Insomnia מעולים לעבודה יומיומית נוחה על API, עם היסטוריה, קולקציות וממשק נעים. אבל הם לא תמיד זמינים - לא בתוך סקריפט, לא בתוך שרת מרוחק שאין לו ממשק גרפי, ולא בתוך פייפליין אוטומטי. curl זמין תמיד. וברגע שאתם יודעים להשתמש בו, אתם יכולים לפתור בעיה בכל סביבה, לא רק במחשב האישי שלכם עם התוכנות המותקנות עליו.
אם אתם רק מתחילים בעולם התכנות והטרמינל עדיין מרגיש זר, שווה להשקיע זמן ביסודות האלה מוקדם - בקורס תכנות בסיסי אנחנו בונים בדיוק את סוג הנוחות הזאת עם שורת הפקודה, כדי שכלים כמו curl יהפכו לחלק טבעי מתהליך העבודה שלכם.
curl הוא לא כלי מרשים, הוא לא ייתן לכם ממשק יפה, אבל הוא יהיה שם בדיוק כשתצטרכו אותו. תלמדו אותו פעם אחת, ותשתמשו בו לשארית הקריירה.