ממיר cURL: מ-cURL ל-Fetch, Python, Axios ועוד
הדביקו פקודת curl, למשל כזו שהועתקה מ-DevTools של הדפדפן, וקבלו קוד מוכן להרצה ב-8 שפות. כותרות, גופי JSON, טפסים, העלאות קבצים, אימות ועוגיות מומרים כולם.
רץ בדפדפן שלכםבלי הרשמהשום דבר לא מועלה
איך משתמשים בכלי ממיר cURL
- העתיקו בקשה כ-cURL: ב-DevTools של Chrome או Firefox, לחצו לחיצה ימנית על בקשה בלשונית Network → Copy → Copy as cURL.
- הדביקו אותה בתיבת הקלט. פקודות מרובות שורות עם
\, המשכי שורה של Windows עם^ומחרוזות$'…'נתמכים. - בחרו את היעד: JavaScript fetch, Axios, Node.js, Python requests, Python httpx, Go, PHP או HTTPie.
- קראו את האזהרות שמתחת לפלט. הן מפרטות אפשרויות שאין להן מקבילה בשפת היעד.
- העתיקו את הקוד או הורידו אותו כקובץ.
למה להמיר פקודות curl לקוד?
curl היא השפה המשותפת של HTTP. תיעוד API מציג דוגמאות ב-curl, כלי DevTools בדפדפן מייצאים בקשות כ-curl, וצוותי תמיכה שולחים שחזורים כ-curl. כשאתם רוצים את הבקשה הזו בתוך אפליקציה, צריך לכתוב אותה מחדש ידנית: להעביר כל -H לאובייקט כותרות, להפוך את -d לגוף הבקשה, להמיר את -u ל-basic auth ולזכור ש--G מעביר את הנתונים ל-query string. הממיר הזה עושה את התרגום בשבילכם ומפיק קוד שאפשר להדביק ישר לפרויקט.
אפשרויות curl נתמכות
| אפשרות | מומרת ל- |
|---|---|
-X, -I, -G | מתודת HTTP (POST מוסקת כאשר יש גוף בקשה) |
-H, -A, -e, -b | כותרות, User-Agent, Referer ועוגיות |
-d, --data-raw, --data-binary, --data-urlencode, --json | גוף הבקשה: אובייקטי JSON, שדות טופס או טקסט גולמי |
-F | נתוני טופס multipart, כולל העלאות @file |
-u, --oauth2-bearer | Basic auth או טוקן Bearer |
-k, -L, -m, -x, --compressed | אימות TLS, הפניות, timeout, proxy ודחיסה |
גופי JSON הופכים לאובייקטים אמיתיים
כאשר הבקשה שולחת JSON (כותרת Content-Type: application/json, --json, או גוף שמתפרש כ-JSON), הממיר מפיק מבני נתונים טבעיים במקום מחרוזת עם escape: JSON.stringify({...}) עבור fetch, אובייקט רגיל עבור Axios, ו-json= עם dict של Python (True, False, None) עבור requests ו-httpx. כך קל לערוך את המטען ולמלא אותו במשתנים.
הבדלים שכדאי לזכור
דפדפנים לא יכולים לבטל בדיקת תעודות או לנתב בקשה בודדת דרך proxy, ולכן -k ו--x מופיעים רק כהערות בקוד fetch לדפדפן. curl לא עוקב אחרי הפניות אלא אם מעבירים -L, בעוד ש-fetch, requests ו-Go עוקבים אחריהן כברירת מחדל. גוף שנשלח עם -d ללא Content-Type מקודד על ידי curl כטופס; אם הוא נראה כמו JSON, הממיר שולח אותו כ-JSON ומודיע על כך באזהרה.
שאלות נפוצות
האם פקודת ה-curl שלי נשלחת לשרת?
איך מעתיקים בקשה כ-cURL מ-Chrome?
האם יש תמיכה בהעלאת קבצים?
-F name=@file הופך ל-FormData ב-JavaScript, ל-dict בשם files= ב-Python, ל-mime/multipart ב-Go ול-CURLFile ב-PHP. -d @file ו--T file קוראים את גוף הבקשה מקובץ.מה קורה לאפשרויות שהממיר לא מכיר?
-s, -v או -o, מתעלמים מהם כי הם לא משנים את הבקשה.