Httpie: คืออะไร ไคลเอนต์ HTTP สำหรับบรรทัดคำสั่ง

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-05-08 เวลาอ่าน: 8 นาที

Httpie เป็นไคลเอนต์ HTTP แบบคอนโซลที่มีไวยากรณ์ที่มนุษย์อ่านง่ายและเอาต์พุตสีสัน ออกแบบมาเพื่อทดสอบ API จากบรรทัดคำสั่ง เครื่องมือนี้ใช้ไวยากรณ์ที่ใช้งานง่าย: http GET https://api.example.com/users โดยไม่ต้องระบุแฟล็กสำหรับส่วนหัวและเนื้อหาคำขอ ตาม Httpie CLI Documentation (2026) ยูทิลิตีนี้รองรับ JSON โดยค่าเริ่มต้น เซสชัน การรับรองความถูกต้อง และปลั๊กอิน

ประเด็นสำคัญ

  • Httpie เป็นตัวแทนที่ทันสมัยของ cURL พร้อมไวยากรณ์ที่อ่านง่าย การเน้นสี และการซีเรียลไลซ์ JSON ในตัว
  • ไวยากรณ์ ของคำขอสร้างตามรูปแบบ: http [method] URL [header:value] [key=value] โดยไม่ต้องมีแฟล็กเพิ่มเติม
  • JSON โดยค่าเริ่มต้น — เนื้อหาคำขอจะถือเป็นออบเจกต์ JSON และส่วนหัว Content-Type จะถูกตั้งค่าโดยอัตโนมัติ
  • เซสชัน จะเก็บคุกกี้และส่วนหัวระหว่างคำขอ ซึ่งสะดวกสำหรับการทดสอบเอนด์พอยต์ที่ได้รับการรับรองความถูกต้อง
  • ปลั๊กอิน ขยาย Httpie ด้วยการรองรับรูปแบบเพิ่มเติม ประเภทการรับรองความถูกต้อง และการขนส่งแบบกำหนดเอง

Httpie คืออะไรและแตกต่างจาก cURL อย่างไร

Httpie (หรือ HTTPie) เป็นยูทิลิตีบรรทัดคำสั่งที่เขียนด้วย Python ซึ่งช่วยให้การส่งคำขอ HTTP ง่ายกว่า cURL ความแตกต่างหลักคือไวยากรณ์ที่ใกล้เคียงภาษาธรรมชาติ: อาร์กิวเมนต์จะถูกคั่นด้วยช่องว่าง ส่วนหัวจะระบุด้วยเครื่องหมายทวิภาค และข้อมูล JSON จะระบุด้วยเครื่องหมายเท่ากับโดยไม่ต้องหนีเครื่องหมายคำพูด

การเปรียบเทียบ cURL และ Httpie

คำขอ POST เดียวกันใน cURL ต้องใช้แฟล็กอย่างน้อยสามตัว (-X, -H, -d) และการหนี JSON ด้วยตนเอง Httpie ทำสิ่งเดียวกันด้วยสามคำโดยไม่มีแฟล็ก โดยตั้งค่า Content-Type: application/json โดยอัตโนมัติและเน้นเอาต์พุต การตอบสนองจะถูกจัดรูปแบบด้วยการเยื้องและการเน้นไวยากรณ์โดยค่าเริ่มต้น

การดำเนินการcURLHttpie
คำขอ GETcurl https://api.example.comhttp GET https://api.example.com
POST JSONcurl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.comhttp POST https://api.example.com name=test
ส่วนหัวcurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

ไวยากรณ์ของคำขอใน Httpie

Httpie ใช้รูปแบบบรรทัดคำสั่งเดียวโดยไม่มีแฟล็กสำหรับพารามิเตอร์หลัก ระบุเมธอด HTTP เป็นอาร์กิวเมนต์แรก (GET, POST, PUT, DELETE, PATCH) และ URL เป็นอาร์กิวเมนต์ที่สอง หากละเมธอด Httpie จะเลือก GET (สำหรับคำขอที่ไม่มีเนื้อหา) หรือ POST (ที่มีเนื้อหา) โดยอัตโนมัติ

ประเภทของอาร์กิวเมนต์

  • Header:Value — ส่วนหัวของคำขอที่มีเครื่องหมายทวิภาค ไม่มีช่องว่างหลังทวิภาค: Authorization:"Bearer token"
  • key=value — ฟิลด์ออบเจกต์ JSON ในเนื้อหาคำขอ: name=John age=30
  • key:=value — ค่า JSON ที่ไม่ใช่สตริง (ตัวเลข บูลีน อาร์เรย์): active:=true tags:=["dev","test"]
  • key@file — โหลดค่าจากไฟล์: avatar@~/photo.jpg

Httpie จะกำหนดประเภทข้อมูลโดยอัตโนมัติ: หากส่ง key=value เนื้อหาจะถูกส่งเป็น JSON หากส่งข้อความดิบผ่าน --raw ข้อความนั้นจะถูกส่งเป็นข้อความธรรมดา รูปแบบ form-data จะเปิดใช้งานด้วยแฟล็ก -f

bash
# คำขอ POST พร้อมข้อมูล JSON และส่วนหัว
http POST https://api.example.com/users \
    name="John Doe" \
    email="john@example.com" \
    role:="admin" \
    Authorization:"Bearer test123"

# การตอบสนองพร้อมการเน้นและ Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
    "id": 42,
    "name": "John Doe"
}

การทำงานกับ JSON และไฟล์

การซีเรียลไลซ์ JSON ใน Httpie ทำงานโดยอัตโนมัติ: ค่าที่ส่งเป็น key=value จะกลายเป็นฟิลด์สตริงของ JSON สำหรับตัวเลขและค่าบูลีน จะใช้ key:=value ออบเจกต์ซ้อนกันถูกสร้างด้วยเครื่องหมายจุด: address.city=Moscow

การอัปโหลดไฟล์และข้อมูลไบนารี

Httpie รองรับรูปแบบ multipart/form-data สำหรับการอัปโหลดไฟล์และข้อมูลผ่านไวยากรณ์ key@path หากจำเป็นต้องส่งเนื้อหาของไฟล์เป็นเนื้อหาดิบของคำขอ จะใช้การเปลี่ยนเส้นทางอินพุต: http POST example.com < file.json หากต้องการดาวน์โหลดการตอบสนองลงไฟล์ ให้ใช้แฟล็ก -d (download)

bash
# ส่ง JSON จากไฟล์
http POST https://api.example.com/users < user.json

# อัปโหลดไฟล์ผ่าน multipart
http -f POST https://api.example.com/upload \
    photo@~/photo.jpg \
    description="Profile photo"

การจัดการเซสชันและคุกกี้

เซสชัน ใน Httpie จะเก็บสถานะระหว่างคำขอ: คุกกี้ ส่วนหัว และพารามิเตอร์การรับรองความถูกต้อง เซสชันถูกสร้างด้วยแฟล็ก --session=name ข้อมูลเซสชันจะถูกเก็บในไฟล์ JSON ในโฟลเดอร์ ~/.httpie/sessions/ เซสชันที่มีคำต่อท้าย :readonly จะไม่ได้รับการอัปเดตหลังคำขอ

ตัวอย่างการทดสอบเซสชัน

ขั้นแรก ส่งคำขอ POST ไปที่ /auth/login พร้อมข้อมูลประจำตัว — เซิร์ฟเวอร์ส่งคืนคุกกี้เซสชัน คำขอที่ตามมาทั้งหมดไปยังเอนด์พอยต์ที่ได้รับการป้องกันภายในเซสชันเดียวกันจะส่งคุกกี้ที่บันทึกไว้โดยอัตโนมัติ ซึ่งจำลองพฤติกรรมของเบราว์เซอร์เมื่อทดสอบ API ของแอปมือถือ

bash
# ขั้นตอนที่ 1: การรับรองความถูกต้อง
http --session=app-test POST https://api.example.com/auth/login \
    username="dev" password="secret"

# ขั้นตอนที่ 2: คำขอพร้อมคุกกี้เซสชันที่บันทึกไว้
http --session=app-test GET https://api.example.com/users/me

การรับรองความถูกต้องและส่วนหัว

Httpie รองรับประเภทการรับรองความถูกต้องหลักทั้งหมดผ่านแฟล็ก: -a user:pass สำหรับ Basic Auth --auth-type=digest สำหรับ Digest --auth-type=bearer TOKEN สำหรับ Bearer Token ส่วนหัวแบบกำหนดเองจะถูกเพิ่มเป็น HeaderName:value ในตำแหน่งใดก็ได้ของคำสั่ง

OAuth 2.0 และ Bearer Token

ในการทดสอบ API ที่ใช้ OAuth 2.0 โทเค็นจะถูกส่งผ่านส่วนหัว Authorization Httpie ไม่จัดการวงจรชีวิตของโทเค็นในระดับคอร์ — สคริปต์ภายนอกเป็นผู้จัดการ คำสั่ง http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource เทียบเท่ากับการระบุส่วนหัวพร้อมโทเค็นอย่างชัดเจน

การใช้ Httpie ในสคริปต์ CI/CD

Httpie เหมาะอย่างยิ่งสำหรับไปป์ไลน์ CI/CD เนื่องจากไม่มีการพึ่งพา (ยกเว้น Python) และเอาต์พุตที่อ่านง่าย คำสั่งอ่านง่ายในล็อกโดยไม่ต้องแยกวิเคราะห์เพิ่มเติม เครื่องมือนี้ติดตั้งผ่าน pip และมีอยู่ใน Docker อิมเมจยอดนิยมทั้งหมด รวมถึง Alpine, Ubuntu และอิมเมจ CI อย่างเป็นทางการของ Jenkins และ GitLab สิ่งนี้ทำให้ Httpie เป็นตัวเลือกที่สะดวกสำหรับการทดสอบ REST API และไมโครเซอร์วิสโดยอัตโนมัติ

การตรวจสอบเอนด์พอยต์ health ระหว่างการ deploy

สถานการณ์ทั่วไปคือการตรวจสอบสถานะของ API หลังจากการ deploy แอปพลิเคชัน Httpie ส่งคำขอไปยังเอนด์พอยต์ health และสิ้นสุดด้วยโค้ดที่ไม่ใช่ศูนย์หากการตอบสนองไม่ตรงกับที่คาดไว้ แฟล็ก --check-status จะส่งคืนข้อผิดพลาดโดยอัตโนมัติสำหรับรหัสสถานะ >= 300

bash
# ตรวจสอบ health ในสคริปต์ deploy
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "API ทำงานปกติ" || \
    echo "การตรวจสอบ API ล้มเหลว"

คุณสมบัติขั้นสูงและปลั๊กอินของ Httpie

Httpie รองรับปลั๊กอินผ่านระบบ Package Index ปลั๊กอินเพิ่มประเภทการรับรองความถูกต้อง รูปแบบการซีเรียลไลซ์ และการขนส่งใหม่ การติดตั้งทำผ่าน pip: pip install httpie-plugin-name หลังการติดตั้ง ปลั๊กอินจะเปิดใช้งานโดยอัตโนมัติเมื่อเริ่ม Httpie ครั้งถัดไป

ปลั๊กอิน Httpie ยอดนิยม

  • httpie-jwt-auth — การรับและรีเฟรชโทเค็น JWT โดยอัตโนมัติผ่านกลไก refresh token
  • httpie-oauth — รองรับ OAuth 2.0 Client Credentials และโฟลว์ Authorization Code พร้อมการแลกเปลี่ยนโค้ดเป็นโทเค็นโดยอัตโนมัติ
  • httpie-editor — เปิดเนื้อหาคำขอในตัวแก้ไขข้อความ (vim, nano, VS Code) ก่อนส่ง
  • httpie-image — แสดงภาพจากการตอบสนองในเทอร์มินัลโดยตรง (ต้องใช้ kitty หรือ iTerm2)

การเขียนสคริปต์และการแยกวิเคราะห์เอาต์พุต

Httpie รองรับการกรองแบบ jq ผ่านตัวเลือก --pretty=format และเอาต์พุตที่เข้ากันได้กับ cURL ผ่าน --print แฟล็ก --quiet จะปิดเอาต์พุตสีเพื่อให้อ่านง่ายขึ้นในล็อก CI สำหรับการประมวลผลการตอบสนองเชิงโปรแกรม ให้ใช้แฟล็ก --body ซึ่งจะแสดงเฉพาะเนื้อหาการตอบสนองโดยไม่มีส่วนหัว

bash
# ดึงฟิลด์จากคำตอบ JSON ด้วย jq
http GET https://api.example.com/users/1 | jq '.name'

# แสดงเฉพาะเนื้อหาการตอบสนอง (ไม่มีส่วนหัว)
http --body GET https://api.example.com/health

# ส่งเป็นชุดพร้อมข้อมูลที่แตกต่างจากไฟล์
while read -r line; do
    http POST https://api.example.com/items $line
done < items.txt

รูปแบบเอาต์พุตและการปรับแต่ง

Httpie รองรับรูปแบบเอาต์พุตผ่านแฟล็ก --print: H (ส่วนหัวคำขอ), B (เนื้อหาคำขอ), h (ส่วนหัวการตอบสนอง), b (เนื้อหาการตอบสนอง) ชุด --print=hb จะแสดงเฉพาะส่วนหัวและเนื้อหาการตอบสนอง แฟล็ก --pretty=all เปิดการจัดรูปแบบสีพร้อมการเยื้อง

รูปแบบสีที่กำหนดเอง

Httpie รองรับการปรับแต่งผ่านตัวแปร HTTPIE_COLORS กำหนดค่าสีสำหรับ URL ส่วนหัว JSON และรหัสสถานะ มีธีมในตัว: autumn, borland, fruity, monokai, native, tango สำหรับเทอร์มินัลต่างๆ

เอาต์พุตในรูปแบบ JSON

สำหรับการประมวลผลเชิงโปรแกรม ให้ใช้ --body --pretty=none ซึ่งส่งคืน JSON ดิบ เอาต์พุตแบบกะทัดรัดมีประโยชน์สำหรับส่งต่อให้ jq, sed และตัวแยกวิเคราะห์อื่นๆ เมื่อทำงานอัตโนมัติในการทดสอบ API ในสคริปต์

รูปแบบเอาต์พุตและการปรับแต่งรูปลักษณ์

Httpie รองรับรูปแบบเอาต์พุตหลายรูปแบบผ่านแฟล็ก --print: H (ส่วนหัวคำขอ), B (เนื้อหาคำขอ), h (ส่วนหัวการตอบสนอง), b (เนื้อหาการตอบสนอง) ชุด --print=hb จะแสดงเฉพาะส่วนหัวและเนื้อหาการตอบสนอง ไม่รวมข้อมูลเมตาของการเชื่อมต่อ แฟล็ก --pretty=all เปิดการจัดรูปแบบสีพร้อมการเยื้องเพื่อความอ่านง่าย

รูปแบบสีที่กำหนดเอง

Httpie รองรับการปรับแต่งสีผ่านตัวแปรสภาพแวดล้อม HTTPIE_COLORS คุณสามารถกำหนดค่าสีสำหรับ URL ส่วนหัว คีย์ JSON และรหัสสถานะการตอบสนอง มีธีมในตัว: autumn, borland, fruity, monokai, native และ tango สำหรับประเภทเทอร์มินัลและความชอบส่วนบุคคลที่แตกต่างกัน

เอาต์พุตในรูปแบบ JSON โดยไม่มีการจัดรูปแบบ

สำหรับการประมวลผลเอาต์พุตเชิงโปรแกรม ให้ใช้ชุดแฟล็ก --body --pretty=none ซึ่งส่งคืน JSON ดิบโดยไม่มีสีและการเยื้อง เอาต์พุตแบบกะทัดรัดมีประโยชน์สำหรับส่งต่อให้ jq, sed และตัวแยกวิเคราะห์คอนโซลอื่นๆ เมื่อทำงานอัตโนมัติในการทดสอบ REST API ในสคริปต์เชลล์

คำถามที่พบบ่อย

ทำไม Httpie จึงดีกว่า cURL มาตรฐาน?

Httpie นำเสนอไวยากรณ์ที่อ่านง่ายกว่าโดยไม่มีแฟล็กสำหรับการดำเนินการพื้นฐาน การซีเรียลไลซ์ JSON อัตโนมัติ การเน้นสีของการตอบสนอง และการรองรับเซสชันในตัว cURL ยังคงจำเป็นสำหรับการดำเนินการระดับต่ำ: การทำงานกับ FTP, SMTP และโปรโตคอลที่ไม่เป็นมาตรฐาน

วิธีส่ง form-data ผ่าน Httpie?

ใช้แฟล็ก -f (หรือ --form): http -f POST example.com name=John file@~/photo.jpg Httpie จะตั้งค่า Content-Type: multipart/form-data โดยอัตโนมัติ หากไม่มีแฟล็ก -f ข้อมูลจะถูกส่งเป็น application/json

Httpie รองรับ HTTPS และใบรับรองหรือไม่?

ใช่ Httpie รองรับ HTTPS สำหรับใบรับรองที่ลงนามด้วยตนเอง ให้ใช้แฟล็ก --verify=no ในการระบุไฟล์ CA แบบกำหนดเอง: --verify=/path/to/cert.pem โดยค่าเริ่มต้น การตรวจสอบใบรับรองจะเปิดอยู่

สามารถใช้ Httpie สำหรับ WebSocket ได้หรือไม่?

ไม่ Httpie ไม่รองรับ WebSocket และมีไว้สำหรับโปรโตคอล HTTP/HTTPS เท่านั้น สำหรับ WebSocket ให้ใช้ websocat หรือ wscat Httpie มุ่งเน้นที่ REST, GraphQL และการทำงานกับไฟล์

วิธีบันทึกการตอบสนองลงในไฟล์ผ่าน Httpie?

ใช้แฟล็ก -d (download): http -d GET https://example.com/file.zip Httpie จะบันทึกไฟล์ด้วยชื่อดั้งเดิมจากส่วนหัว Content-Disposition หรือ URL สำหรับชื่อที่กำหนดเอง ให้ระบุ -o output.zip

สรุป

  • Httpie — ไคลเอนต์ HTTP แบบคอนโซลที่มีไวยากรณ์ที่ใช้งานง่าย JSON โดยค่าเริ่มต้น และเอาต์พุตสี
  • ไวยากรณ์พื้นฐาน http [method] URL [key=value] [Header:value] ไม่ต้องใช้แฟล็กสำหรับคำขอส่วนใหญ่
  • การซีเรียลไลซ์ JSON อัตโนมัติ: key=value กลายเป็นฟิลด์ JSON key:=value สำหรับตัวเลขและค่าบูลีน
  • เซสชัน เก็บคุกกี้และส่วนหัวระหว่างคำขอเพื่อทดสอบเอนด์พอยต์ที่ได้รับการรับรองความถูกต้อง
  • การรับรองความถูกต้อง รองรับสคีมา Basic, Digest, Bearer และแบบกำหนดเองผ่านแฟล็ก --auth-type
  • การผสานรวม CI/CD กับ --check-status และไม่มีการพึ่งพาทำให้ Httpie สะดวกสำหรับสคริปต์การ deploy
  • การอัปโหลดไฟล์ ผ่าน multipart form-data ด้วยแฟล็ก -f และไวยากรณ์ key@file

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม