Httpie là một HTTP client console có cú pháp dễ đọc cho con người và đầu ra màu, được thiết kế để kiểm thử API từ dòng lệnh. Công cụ này sử dụng cú pháp trực quan: http GET https://api.example.com/users mà không cần chỉ định cờ cho tiêu đề và phần thân yêu cầu. Theo Httpie CLI Documentation (2026), tiện ích này hỗ trợ JSON theo mặc định, phiên, xác thực và plugin.
Điểm chính
Httpie (hoặc HTTPie) là một tiện ích dòng lệnh viết bằng Python giúp đơn giản hóa việc gửi yêu cầu HTTP so với cURL. Điểm khác biệt chính là cú pháp gần với ngôn ngữ tự nhiên: các đối số được phân tách bằng dấu cách, tiêu đề được chỉ định bằng dấu hai chấm và dữ liệu JSON được chỉ định bằng dấu bằng mà không cần thoát dấu ngoặc kép.
Cùng một yêu cầu POST trong cURL cần ít nhất ba cờ (-X, -H, -d) và thoát JSON thủ công. Httpie làm điều tương tự với ba từ mà không cần cờ, tự động đặt Content-Type: application/json và tô màu đầu ra. Phản hồi được định dạng với thụt lề và tô màu cú pháp theo mặc định.
| Thao tác | cURL | Httpie |
|---|---|---|
| Yêu cầu GET | curl https://api.example.com | http GET https://api.example.com |
| POST JSON | curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.com | http POST https://api.example.com name=test |
| Tiêu đề | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
Httpie sử dụng một định dạng dòng lệnh thống nhất không cần cờ cho các tham số chính. Phương thức HTTP được chỉ định làm đối số đầu tiên (GET, POST, PUT, DELETE, PATCH), URL làm đối số thứ hai. Nếu bỏ qua phương thức, Httpie tự động chọn GET (cho yêu cầu không có thân) hoặc POST (có thân).
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].avatar@~/photo.jpg.Httpie tự động xác định loại dữ liệu: nếu truyền key=value, phần thân được gửi dưới dạng JSON. Nếu truyền văn bản thô qua --raw, nó được gửi dưới dạng văn bản thuần. Định dạng form-data được kích hoạt bằng cờ -f.
# Yêu cầu POST với dữ liệu JSON và một tiêu đề
http POST https://api.example.com/users \
name="John Doe" \
email="john@example.com" \
role:="admin" \
Authorization:"Bearer test123"
# Phản hồi có tô màu và Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 42,
"name": "John Doe"
}
Tuần tự hóa JSON trong Httpie hoạt động tự động: giá trị truyền dưới dạng key=value trở thành trường chuỗi của JSON. Đối với số và giá trị boolean, sử dụng key:=value. Các đối tượng lồng nhau được tạo bằng ký hiệu dấu chấm: address.city=Moscow.
Httpie hỗ trợ định dạng multipart/form-data để tải lên tệp và dữ liệu qua cú pháp key@path. Nếu cần gửi nội dung tệp dưới dạng thân thô của yêu cầu, sử dụng chuyển hướng đầu vào: http POST example.com < file.json. Để tải phản hồi xuống tệp, sử dụng cờ -d (download).
# Gửi JSON từ một tệp
http POST https://api.example.com/users < user.json
# Tải lên tệp qua multipart
http -f POST https://api.example.com/upload \
photo@~/photo.jpg \
description="Profile photo"
Phiên trong Httpie lưu giữ trạng thái giữa các yêu cầu: cookie, tiêu đề và tham số xác thực. Phiên được tạo bằng cờ --session=name. Dữ liệu phiên được lưu trong tệp JSON trong thư mục ~/.httpie/sessions/. Phiên có hậu tố :readonly không được cập nhật sau yêu cầu.
Đầu tiên, yêu cầu POST tới /auth/login được gửi với thông tin đăng nhập — máy chủ trả về cookie phiên. Tất cả các yêu cầu sau đó tới các điểm cuối được bảo vệ trong cùng phiên tự động gửi cookie đã lưu, mô phỏng hành vi của trình duyệt khi kiểm thử API của ứng dụng di động.
# Bước 1: xác thực
http --session=app-test POST https://api.example.com/auth/login \
username="dev" password="secret"
# Bước 2: yêu cầu với cookie phiên đã lưu
http --session=app-test GET https://api.example.com/users/me
Httpie hỗ trợ tất cả các loại xác thực chính qua cờ: -a user:pass cho Basic Auth, --auth-type=digest cho Digest, --auth-type=bearer TOKEN cho Bearer Token. Tiêu đề tùy chỉnh được thêm dưới dạng HeaderName:value ở bất kỳ đâu trong lệnh.
Để kiểm thử API với OAuth 2.0, mã thông báo được truyền qua tiêu đề Authorization. Httpie không quản lý vòng đời mã thông báo ở cấp lõi — một script bên ngoài làm điều này. Lệnh http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource tương đương với việc chỉ định rõ tiêu đề với mã thông báo.
Httpie lý tưởng cho các pipeline CI/CD nhờ không có phụ thuộc (ngoại trừ Python) và đầu ra dễ đọc. Các lệnh dễ đọc trong nhật ký mà không cần phân tích thêm. Công cụ được cài đặt qua pip và có sẵn trong tất cả các image Docker phổ biến, bao gồm Alpine, Ubuntu và các image CI chính thức của Jenkins và GitLab. Điều này làm cho Httpie trở thành lựa chọn thuận tiện cho việc kiểm thử tự động các API REST và vi dịch vụ.
Kịch bản điển hình là kiểm tra trạng thái API sau khi triển khai ứng dụng. Httpie gửi yêu cầu tới điểm cuối health và kết thúc với mã khác không nếu phản hồi không khớp với dự kiến. Cờ --check-status tự động trả về lỗi cho mã trạng thái >= 300.
# Kiểm tra health trong script triển khai
http --check-status GET https://api.staging.example.com/health
status:="ok" && \
echo "API đang hoạt động bình thường" || \
echo "Kiểm tra API thất bại"
Httpie hỗ trợ plugin qua hệ thống Package Index. Plugin thêm các loại xác thực, định dạng tuần tự hóa và phương thức vận chuyển mới. Cài đặt được thực hiện qua pip: pip install httpie-plugin-name. Sau khi cài đặt, plugin tự động được kích hoạt ở lần khởi động tiếp theo của Httpie.
Httpie hỗ trợ lọc giống jq qua tùy chọn --pretty=format và đầu ra tương thích cURL qua --print. Cờ --quiet tắt đầu ra màu để dễ đọc hơn trong nhật ký CI. Để xử lý phản hồi theo chương trình, hãy sử dụng cờ --body, cờ này chỉ xuất phần thân phản hồi mà không có tiêu đề.
# Trích xuất trường từ phản hồi JSON bằng jq
http GET https://api.example.com/users/1 | jq '.name'
# Chỉ xuất thân phản hồi (không có tiêu đề)
http --body GET https://api.example.com/health
# Gửi hàng loạt với các dữ liệu khác nhau từ tệp
while read -r line; do
http POST https://api.example.com/items $line
done < items.txt
Httpie hỗ trợ định dạng đầu ra qua cờ --print: H (tiêu đề yêu cầu), B (thân yêu cầu), h (tiêu đề phản hồi), b (thân phản hồi). Tổ hợp --print=hb chỉ xuất tiêu đề và thân phản hồi. Cờ --pretty=all bật định dạng màu với thụt lề.
Httpie hỗ trợ tùy chỉnh qua biến HTTPIE_COLORS. Cấu hình màu cho URL, tiêu đề, JSON và mã trạng thái. Có các chủ đề tích hợp: autumn, borland, fruity, monokai, native, tango cho các terminal khác nhau.
Để xử lý theo chương trình, hãy sử dụng --body --pretty=none, trả về JSON thô. Đầu ra gọn nhẹ hữu ích để chuyển cho jq, sed và các trình phân tích khác khi tự động hóa kiểm thử API trong script.
Httpie hỗ trợ nhiều định dạng đầu ra qua cờ --print: H (tiêu đề yêu cầu), B (thân yêu cầu), h (tiêu đề phản hồi), b (thân phản hồi). Tổ hợp --print=hb chỉ xuất tiêu đề và thân phản hồi, loại trừ siêu thông tin kết nối. Cờ --pretty=all bật định dạng màu với thụt lề để dễ đọc.
Httpie hỗ trợ tùy chỉnh màu qua biến môi trường HTTPIE_COLORS. Bạn có thể cấu hình màu cho URL, tiêu đề, khóa JSON và mã trạng thái phản hồi. Có các chủ đề tích hợp: autumn, borland, fruity, monokai, native và tango cho các loại terminal và sở thích cá nhân khác nhau.
Để xử lý đầu ra theo chương trình, hãy sử dụng tổ hợp cờ --body --pretty=none, trả về JSON thô không có màu và thụt lề. Đầu ra gọn nhẹ hữu ích để chuyển cho jq, sed và các trình phân tích console khác khi tự động hóa kiểm thử API REST trong script shell.
Câu hỏi thường gặp
Httpie cung cấp cú pháp dễ đọc hơn không cần cờ cho các thao tác cơ bản, tuần tự hóa JSON tự động, tô màu phản hồi và hỗ trợ phiên tích hợp. cURL vẫn không thể thiếu cho các thao tác cấp thấp: làm việc với FTP, SMTP và các giao thức không chuẩn.
Sử dụng cờ -f (hoặc --form): http -f POST example.com name=John file@~/photo.jpg. Httpie sẽ tự động đặt Content-Type: multipart/form-data. Không có cờ -f, dữ liệu được gửi dưới dạng application/json.
Có, Httpie hỗ trợ HTTPS. Đối với chứng chỉ tự ký, hãy sử dụng cờ --verify=no. Để chỉ định tệp CA tùy chỉnh: --verify=/path/to/cert.pem. Theo mặc định, việc xác minh chứng chỉ được bật.
Không, Httpie không hỗ trợ WebSocket và chỉ dành riêng cho giao thức HTTP/HTTPS. Đối với WebSocket, hãy sử dụng websocat hoặc wscat. Httpie tập trung vào REST, GraphQL và các thao tác tệp.
Sử dụng cờ -d (download): http -d GET https://example.com/file.zip. Httpie sẽ lưu tệp với tên gốc từ tiêu đề Content-Disposition hoặc URL. Để có tên tùy chỉnh, hãy chỉ định -o output.zip.
Tóm tắt
http [method] URL [key=value] [Header:value] không yêu cầu cờ cho hầu hết các yêu cầu.Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm