ฉันจะทดสอบวิธี RESTful PUT (หรือ DELETE) โดยใช้ curl ได้อย่างไร
ฉันจะทดสอบวิธี RESTful PUT (หรือ DELETE) โดยใช้ curl ได้อย่างไร
คำตอบ:
การใช้-X
แฟล็กด้วยกริยา HTTP ที่คุณต้องการ:
curl -X PUT -d arg=val -d arg2=val2 localhost:8080
ตัวอย่างนี้ยังใช้การ-d
ตั้งค่าสถานะเพื่อให้ข้อโต้แย้งกับคำขอ PUT ของคุณ
GET
เปลี่ยนเส้นทางหลังให้เพิ่มพารามิเตอร์--location
ในบรรทัดเดียวคำสั่ง curl จะเป็น:
a) หากส่งข้อมูลแบบฟอร์ม:
curl -X PUT -H "Content-Type: multipart/form-data;" -F "key1=val1" "YOUR_URI"
b) หากส่งข้อมูลดิบเป็น json:
curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value"}' "YOUR_URI"
c) หากส่งไฟล์ที่มีคำขอ POST:
curl -X POST "YOUR_URI" -F 'file=@/file-path.csv'
คุณสามารถใช้แอปPOSTMANจาก Chrome Store เพื่อรับคำขอ cURL ที่เทียบเท่า สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อเขียนคำขอที่ซับซ้อนมากขึ้น
สำหรับคำขอที่มีรูปแบบอื่นหรือสำหรับไคลเอนต์ที่แตกต่างกันเช่น java, PHP คุณสามารถตรวจสอบ POSTMAN / ความคิดเห็นด้านล่าง
ตัวอย่าง PUT ตามความคิดเห็นของ Martin C. Martin:
curl -T filename.txt http://www.example.com/dir/
ด้วย-T
(เหมือน--upload-file
) curl จะใช้ PUT สำหรับ HTTP
-T
แทนไม่มี-X PUT
ถ้าคุณต้องการที่จะระบุพารามิเตอร์ด้วยหรือ-d
ส่งเนื้อหาของไฟล์ผ่าน PUT เพื่อให้บรรลุการเปลี่ยนเส้นทางหลังจากเพิ่มพารามิเตอร์-F
-T
GET
--location
curl -X PUT -d 'new_value' URL_PATH/key
ที่ไหน
X - ตัวเลือกที่จะใช้สำหรับคำสั่งคำขอ
d - ตัวเลือกที่จะใช้เพื่อวางข้อมูลใน URL ระยะไกล
URL_PATH - URL ระยะไกล
new_value - ค่าที่เราต้องการนำไปคีย์ของเซิร์ฟเวอร์
ฉันมาถึงสายนี้ แต่ฉันก็มีความต้องการที่คล้ายกัน เนื่องจากสคริปต์ของฉันกำลังสร้างคำขอ curl แบบไดนามิกฉันต้องการโครงสร้างที่คล้ายกันของคำสั่งทั่ว GET, POST และ PUT
นี่คือสิ่งที่ได้ผลสำหรับฉัน
สำหรับคำขอPUT :
curl --request PUT --url http://localhost:8080/put --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'
สำหรับคำขอPOST :
curl --request POST --url http://localhost:8080/post --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'
สำหรับคำขอGET :
curl --request GET --url 'http://localhost:8080/get?foo=bar&foz=baz'