ใช้ cURL ยิง HTTP POST และ GET

@pittaya แนะนำผมมาหลายครั้งว่าให้ใช้ cURL แทน wget หรือการเขียนโปรแกรมมายิง HTTP request เอง

วันก่อนได้มีโอกาสลองกับ server ของตัวเองที่ office (เป็น Red Hat Enterprise Linux 5) แล้วก็พบว่ามันง่ายดี ^^

การลง cURL ใน RHEL นี่เหมือนมันจะมี binary ให้ load อยู่แล้ว แต่ลงกดๆ ใน page แล้วงงว่าอันไหนใหม่สุด ก็เลย load source code ไป build ตาม http://curl.haxx.se/docs/install.html เลย (งงตรงที่ readme ที่ได้จาก package ไม่บอกวิธี build แฮะ) ลงเสร็จเราก็จะได้ curl command ไว้ใช้ครับ

สำหรับ GET ก็ง่าย แค่สั่ง

$> curl <URL>

แล้ว response จะถูก display ออกมาเลย ไม่เหมือน wget ที่จะ save ลง file เป็นชื่อ path สุดท้ายเสมอ

$> curl http://localhost:8080/json/quote/FB
{"bid":10,"ask":10,"time":18:48.41}
$>

เราจะใช้ -> redirect ลง file ก็ได้เหมือนกัน สะดวกดี

$> curl http://localhost:8080/json/quote/FB  -> fb.txt
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6281    0  6281    0     0   803k      0 --:--:-- --:--:-- --:--:--  876k
$> cat fb.txt
{"bid":10,"ask":10,"time":18:48.41}

สำหรับ POST ก็ต้องเพิ่ม parameter สำหรับใส่ data และระบุว่า Content-type แบบไหนเข้าไป ซึ่ง ที่ผมใช้เลือกเป็น application/json

$> curl -X POST -H 'Accept: application/json' -H 'Content-type:<Content-type>' -d '<data>' <URL>
$> curl -X POST -H 'Accept: application/json' -H 'Content-type:application/json' -d '{"request":"GOOG","compare":"AAPL"}' http://localhost:8080/json/ts
{"item":"GOOG",data:["bid":10,"ask":10,"time":18:48.41],"item":"AAPL",data:["bid":1,"ask":1,"time":18:48.41]}
$>

ส่วนตัว cURL เมื่อเทียบกับ wget ผมรู้สึก cURL แม้คำสั่งจะยาวกว่า แต่ก็ยืดหยุ่นกว่า ดูผลง่ายกว่าและ save ลง file เป็นชื่อที่ต้องการได้ครับ

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.