dev/converter
แปลงคำขอ cURL - ฟรี ใช้งานได้ทันที | Smocky
อ่านคำสั่ง cURL (bash, zsh หรือ Windows cmd), HAR, คำขอ HTTP, ไฟล์ .http หรือ Postman collection v2.1/v2.0 ภายในเบราว์เซอร์ โดยไม่ส่งคำขอจริง โค้ดที่สร้างเป็นจุดเริ่มต้นให้ตรวจทาน ยังไม่ได้ยืนยันว่าจะทำงานเทียบเท่าไคลเอนต์เดิม
คำถามที่พบบ่อย
เหตุใดโค้ดที่สร้างจึงปิดการตาม redirect
cURL ไม่ตาม redirect เว้นแต่ใช้ -L โค้ดจึงใช้ fetch redirect: "manual", Axios maxRedirects: 0, Python allow_redirects=False, Go CheckRedirect ที่คืน http.ErrUseLastResponse และ Guzzle allow_redirects => false ส่วน HTTPie หยุดที่คำตอบแรกอยู่แล้ว เมื่อใช้ -L จึงเปิดตาม redirect สำหรับ fetch ในเบราว์เซอร์ โหมด manual ให้คำตอบ opaque แทนข้อมูล redirect โดยตรง
แปลง -k (--insecure) อย่างไร
Axios ใช้ https.Agent กับ rejectUnauthorized: false, Python ใช้ verify=False, Go ใช้ tls.Config กับ InsecureSkipVerify: true, Guzzle ใช้ verify => false และ HTTPie ใช้ --verify=no ส่วน JavaScript fetch ไม่มีการตั้งค่านี้ จึงแจ้งว่าไม่ครอบคลุม -k
ไฟล์ที่ระบุด้วย @ หรือ -F เป็นอย่างไร
ค่าเช่น -d @body.json หรือ -F photo=@cat.png อ้างไฟล์ในเครื่องที่เครื่องมืออ่านไม่ได้ ข้อมูลไฟล์จะแสดงตำแหน่งเช่น <contents of body.json> ไฟล์ multipart เปิดตาม path ตอนรันด้วย openAsBlob ใน Node.js, open() ใน Python, os.Open ใน Go, fopen ใน PHP หรือ photo@cat.png ใน HTTPie ส่วน browser fetch ให้ Blob ว่างที่ทำเครื่องหมายไว้เพื่อแทนค่า ทุกการอ้างไฟล์มีคำเตือน
แทนตัวแปรเชลล์เช่น $TOKEN หรือไม่
ไม่แทน $TOKEN, ${TOKEN}, $(command), backticks และ %VAR% ของ cmd ถูกเก็บเป็นข้อความ เพราะเครื่องมือไม่รันเชลล์ แต่ละตำแหน่งจะถูกแจ้งให้แทนค่าจริงเอง
วางคำสั่งจากเชลล์ใดได้บ้าง
รองรับการครอบคำพูดของ bash/zsh รวม backslash ต่อบรรทัดและสตริง $'...' รวมถึง Windows cmd จาก Copy as cURL (cmd) ของ Chrome DevTools ที่ใช้ ^ ไม่รองรับ PowerShell เช่น Invoke-WebRequest ให้คัดลอกเป็น cURL (bash) หรือ cURL (cmd) ไม่รับ pipe, &&, ;, redirect หรือ --next เพราะหนึ่งคำสั่งต้องอธิบายคำขอเดียว
โทเคนและคุกกี้ถูกส่งไปที่ใด
อ่านคำสั่งในเบราว์เซอร์และไม่ส่งคำขอจริง Authorization, คุกกี้ และข้อมูล -u ถูกคัดลอกลงโค้ดตามเดิม เครื่องมือแจ้งเมื่อพบเพื่อให้ลบก่อนแชร์โค้ด
แปลงต้นฉบับคำขอแบบใดได้บ้าง
รองรับ cURL, HAR จาก DevTools, คำขอ HTTP, ไฟล์ .http จาก VS Code REST Client หรือ JetBrains และ Postman v2.1/v2.0 ตรวจรูปแบบอัตโนมัติและแสดงชื่อให้เห็น หากกำกวมเลือกเองได้ HAR, .http และ Postman มีหลายคำขอได้ เลือกและกรองตาม method, URL หรือชื่อ
เปิดไฟล์ HAR ที่นี่ได้อย่างไร
HAR มักมีคุกกี้และโทเคนของเซสชันจริงจึงมีคำเตือน ไฟล์ถูกอ่านในเบราว์เซอร์และไม่อัปโหลด แต่ละ entry เป็นคำขอหนึ่งรายการ ละส่วนหัว HTTP/2 เช่น :authority และ content-length ใช้ส่วนหัว Cookie แทนรายการ cookies และไม่อ่านคำตอบที่บันทึกไว้
จัดการตัวแปร การยืนยันตัวตน และสคริปต์ Postman อย่างไร
แทนตัวแปร collection ส่วน {{variable}} ที่มีเฉพาะใน environment จะคงเดิมพร้อมคำเตือน รับช่วง auth จาก folder หรือ collection แปลง basic, bearer และ API key ส่วน OAuth 1.0/2.0, digest, AWS Signature และแบบอื่นแจ้งว่าไม่แปลง ข้ามส่วนหัว query และฟิลด์ฟอร์มที่ปิดใช้ ละสคริปต์ก่อนส่งและทดสอบพร้อมคำเตือน ไม่รับ Postman v1 ให้ส่งออก v2.1
ตัวแปรและชื่อในไฟล์ .http เป็นอย่างไร
แทนตัวแปรไฟล์เช่น @host = api.example.com ใน {{host}} และใช้ # @name login เป็นชื่อคำขอ ตัวแปรพลวัตเช่น {{$guid}} หรือ {{$dotenv KEY}} ที่ไคลเอนต์สร้างตอนส่งจะคงเดิมพร้อมคำเตือน เนื้อหา < ./payload.json เป็นการอ้างไฟล์ ละสคริปต์จัดการคำตอบ และตาม redirect เว้นแต่มี # @no-redirect
คำขอ HTTP แบบดิบได้ URL มาจากไหน
ถ้าบรรทัดคำขอมี URL เต็ม เช่น GET https://api.example.com/items HTTP/1.1 จะใช้ตามนั้น หากมีเฉพาะ path เช่น POST /login HTTP/1.1 จะรวมกับ Host และสมมติ https:// พร้อมแจ้ง เพราะต้นฉบับไม่ระบุ HTTP หรือ HTTPS ละ Content-Length เพื่อให้ไคลเอนต์คำนวณใหม่
สร้างกลับเป็นคำสั่ง cURL ได้หรือไม่
ได้ เลือก cURL เป็นปลายทางเพื่อแปลง HAR, HTTP, .http หรือ Postman เป็นคำสั่ง ใช้คำพูดแบบ POSIX สำหรับ bash/zsh เป็นค่าเริ่มต้น หรือเลือก Windows cmd ที่ใช้ ^ แบบ Chrome ได้ ทั้งสองแบบนำกลับมาวางแล้วอ่านเป็นคำขอเดิมได้
มีขีดจำกัดอะไรบ้าง
ข้อความที่วางไม่เกิน 100,000 หน่วย UTF-16 ไฟล์ที่เปิดหรือลากไม่เกิน 10 MiB และ 5,000 คำขอ คำสั่งมีส่วนหัวและส่วนข้อมูลได้ 1,000 ส่วน โค้ดผลลัพธ์ไม่เกิน 1,000,000 หน่วย หากเกินจะแจ้งโดยไม่ตัดทอน ตัวเลือกที่เปลี่ยนเพียงสิ่งที่ cURL แสดง เช่น -s หรือ -o จะมีข้อสังเกตว่าไม่มีผล ตัวเลือกอื่นที่ไม่แปลงมีคำเตือน