Nếu bạn làm việc nhiều trong terminal nhưng thấy cú pháp curl dài dòng và output khó đọc, curlie là một lựa chọn đáng thử. Đây là HTTP client dòng lệnh bọc quanh curl nhưng dùng cú pháp thân thiện và output có màu theo phong cách HTTPie. Bài viết này hướng dẫn cách cài đặt, gửi request, truyền header/query/body, so sánh curlie với curl và HTTPie, cũng như khi nào nên chuyển từ lệnh terminal dùng một lần sang workflow API có thể lưu và chạy lại.
curlie thực sự là gì
curlie là một frontend cho curl. Nó không tự triển khai lại HTTP. Thay vào đó, curlie nhận cú pháp ngắn gọn kiểu HTTPie, chuyển đổi thành lời gọi curl tương ứng, rồi để binary curl trên máy bạn thực hiện request thật.
Kết quả là bạn có:
- Cú pháp gọn hơn curl thuần.
- Output có màu.
- JSON được format dễ đọc.
- Vẫn dùng được các flag gốc của curl.
Điểm quan trọng: vì curl vẫn là phần thực hiện network, curlie kế thừa hỗ trợ giao thức, TLS, proxy và nhiều hành vi quen thuộc của curl. Bạn có thể truyền trực tiếp flag curl vào lệnh curlie khi cần.
Nói ngắn gọn: curlie phù hợp để kiểm tra nhanh endpoint, đọc response và debug request ngay trong terminal. Nó không phải test runner và không được thiết kế để thay thế workflow kiểm thử API có lưu trữ.
Vì sao nên dùng curlie
curl có mặt gần như ở mọi nơi, nhưng output mặc định khá thô. JSON thường in ra một dòng dài, header và body khó tách biệt nếu bạn không thêm flag.
HTTPie cải thiện trải nghiệm đọc và viết request, nhưng là một công cụ riêng với runtime Python. curlie nằm giữa hai lựa chọn này: cú pháp dễ dùng hơn, output dễ đọc hơn, nhưng vẫn chạy trên nền curl.
Các lợi ích thực tế:
- Dễ đọc theo mặc định: JSON được pretty-print, header/body rõ ràng hơn.
-
Cú pháp ngắn gọn: dùng
key=value,Header:value,param==valuethay vì nhiều-H,-d. -
Tận dụng curl: vẫn dùng được flag curl như
-v,--max-time,--proxy,--cacert. - Cài đặt đơn giản: binary Go duy nhất.
-
Tốt cho học và debug:
-vgiúp xem request/response chi tiết.
Cài đặt curlie
curlie được phân phối qua package manager hoặc binary build sẵn. Bạn nên kiểm tra trang release chính thức trên GitHub nếu cần phiên bản mới nhất.
macOS với Homebrew
brew install curlie
Cài bằng Go
Nếu đã có Go:
go install github.com/rs/curlie@latest
Đảm bảo thư mục binary của Go nằm trong PATH, thường là:
export PATH="$PATH:$(go env GOPATH)/bin"
Kiểm tra:
curlie --version
Cài từ binary tải về
Ví dụ:
mv curlie /usr/local/bin/
chmod +x /usr/local/bin/curlie
curlie --version
curlie cần curl có sẵn trên hệ thống vì nó gọi curl bên dưới. Trên macOS và hầu hết Linux distro, curl thường đã được cài đặt.
Gửi request GET đầu tiên
Request GET cơ bản chỉ cần URL:
curlie httpbin.org/get
Nếu bạn bỏ qua protocol, curlie có thể tự thêm http://. Khi không chỉ định method, curlie mặc định dùng GET.
Bạn cũng có thể viết rõ method:
curlie GET httpbin.org/get
Dùng verbose để xem chi tiết request:
curlie -v GET httpbin.org/get
Flag -v rất hữu ích khi bạn cần xác nhận header, URL cuối cùng hoặc quá trình gửi request.
Gửi query parameter
Dùng cú pháp:
key==value
Ví dụ:
curlie GET httpbin.org/get search==apidog page==1
Request tương đương:
GET /get?search=apidog&page=1
Cú pháp này giúp tránh việc phải tự nối query string dài trong URL.
Gửi header
Dùng cú pháp:
Header-Name:value
Ví dụ gửi bearer token:
curlie GET httpbin.org/get Authorization:"Bearer token123"
Gửi nhiều header:
curlie GET httpbin.org/get \
Authorization:"Bearer token123" \
Accept:application/json \
X-Request-ID:demo-001
Nếu value có khoảng trắng, hãy quote lại như ví dụ Authorization:"Bearer token123".
Gửi JSON body
Dùng cặp:
key=value
Ví dụ POST JSON:
curlie POST httpbin.org/post name=apidog role=platform
curlie sẽ tạo body JSON tương đương:
{
"name": "apidog",
"role": "platform"
}
Và tự thiết lập header phù hợp như Content-Type: application/json.
Ví dụ đầy đủ hơn:
curlie POST httpbin.org/post \
Authorization:"Bearer token123" \
name=apidog \
role=platform \
active=true
Kết hợp header, query và body
Một request thực tế thường cần đủ cả query, header và body:
curlie POST api.example.com/users \
Authorization:"Bearer token123" \
env==staging \
name="Nguyen Van A" \
role=admin
Trong đó:
-
Authorization:"Bearer token123"là header. -
env==staginglà query parameter. -
name=...vàrole=...là JSON body.
Dùng flag curl gốc
Vì curlie bọc quanh curl, bạn có thể dùng flag curl khi cần kiểm soát sâu hơn.
Giới hạn timeout:
curlie --max-time 5 GET httpbin.org/get
Bật verbose:
curlie -v GET httpbin.org/get
Theo dõi redirect:
curlie -L GET httpbin.org/redirect/1
Nếu bạn muốn hiểu kỹ hơn các flag curl mà curlie đang bọc, xem thêm hướng dẫn dùng curl để test REST API.
curlie so với curl so với HTTPie
Cả ba đều có thể gửi HTTP request từ terminal. Khác biệt chính nằm ở cú pháp, output và engine bên dưới.
| Khía cạnh | curl | HTTPie | curlie |
|---|---|---|---|
| Engine | libcurl | Python | curl |
| Cú pháp | Nhiều flag như -X, -H, -d
|
Gọn, kiểu key=value
|
Gọn, kiểu HTTPie |
| Output | Thô, ít format mặc định | Có màu, JSON đẹp | Có màu, JSON đẹp |
| Cài đặt | Thường có sẵn | Package Python | Binary Go |
| Dùng flag curl gốc | Có | Không trực tiếp | Có |
| Phụ thuộc | Ít hoặc không cần thêm | Python runtime | Binary curl |
| Phù hợp cho | Script, automation, debug thấp tầng | Request thủ công dễ đọc | Request thủ công dễ đọc nhưng vẫn dựa trên curl |
Tóm tắt:
- Dùng curl khi bạn cần tính phổ biến tối đa, viết script portable hoặc kiểm soát thấp tầng.
- Dùng HTTPie khi bạn muốn HTTP client độc lập, cú pháp đẹp và không ngại phụ thuộc Python.
- Dùng curlie khi bạn muốn trải nghiệm giống HTTPie nhưng vẫn giữ hành vi và flag của curl.
Nếu bạn đang cân nhắc giữa các công cụ, có thể đọc thêm hướng dẫn HTTPie, bài so sánh curl với HTTPie, hoặc danh sách các lựa chọn thay thế curl để kiểm thử REST API.
Khi nào nên dùng curlie
curlie phù hợp nhất cho các thao tác nhanh, tương tác:
- Kiểm tra endpoint có hoạt động không.
- Xem nhanh JSON response mà không cần pipe qua
jq. - Debug header, token, query parameter.
- So sánh response giữa các môi trường.
- Demo request HTTP trong terminal.
- Học curl thông qua
-v.
Ví dụ debug token:
curlie -v GET api.example.com/me Authorization:"Bearer $TOKEN"
Ví dụ kiểm tra response staging:
curlie GET staging-api.example.com/users limit==10
Khi nào không nên dùng curlie
curlie không phù hợp nếu bạn cần:
- Lưu request để dùng lại lâu dài.
- Chia sẻ request với team.
- Quản lý nhiều environment như local, staging, production.
- Viết assertion cho status code, response field hoặc schema.
- Chạy test trong CI/CD.
- Tạo báo cáo pass/fail.
Bạn vẫn có thể gọi curlie trong shell script, nhưng khi script bắt đầu có nhiều grep, jq, điều kiện if, token và biến môi trường, đó là dấu hiệu nên chuyển sang workflow kiểm thử API có cấu trúc hơn.
Lộ trình thực tế: từ curlie sang workflow API có thể lặp lại
Một cách làm hiệu quả:
- Dùng curlie để khám phá endpoint.
- Xác định method, URL, header, query và body đúng.
- Khi request ổn định, lưu nó vào công cụ quản lý API.
- Thêm environment variables.
- Thêm assertions.
- Chạy lại trong CI/CD.
Apidog phù hợp cho bước sau terminal. Nó không thay thế curlie trong việc thử nhanh một request, mà giúp bạn biến request đã debug thành workflow có thể lưu, chia sẻ và tự động hóa.
Với Apidog, bạn có thể:
- Lưu request vào collection thay vì tìm lại trong shell history.
- Quản lý environment cho local, staging, production.
- Thêm assertion để kiểm tra status code, field trong response hoặc schema.
-
Chạy test trong CI bằng
apidog run. - Chia sẻ với team trong workspace cộng tác.
Một workflow thực tế:
curlie để khám phá endpoint
↓
lưu request trong Apidog
↓
thêm environment variables
↓
thêm assertions
↓
chạy trong CI/CD
Nếu bạn đang xây dựng quy trình kiểm thử API cho team, xem thêm hướng dẫn kiểm thử API.
FAQ
curlie có thay thế curl không?
Không hoàn toàn. curlie chạy trên curl, nên nó giống một giao diện thân thiện hơn cho curl. curl vẫn là engine thực hiện request thật. Bạn dùng curlie khi muốn cú pháp gọn và output dễ đọc hơn.
curlie có dùng được trong CI/CD không?
Có thể gọi curlie trong script, nhưng nó không được thiết kế làm test runner. Nó không có assertion, test case đã lưu hoặc báo cáo có cấu trúc. Với pipeline, bạn nên dùng công cụ có khả năng chạy test và fail build khi response sai. Apidog hỗ trợ vai trò này qua apidog run; bạn cũng có thể tham khảo danh sách các API testing client phổ biến.
curlie khác gì HTTPie?
Hai công cụ có trải nghiệm tương tự vì curlie học theo cú pháp và output của HTTPie. Khác biệt chính là engine: HTTPie là công cụ Python độc lập, còn curlie là wrapper mỏng quanh curl. Chọn curlie nếu bạn muốn tiếp tục tận dụng curl và các flag curl gốc.
Có xem được request thật mà curlie gửi không?
Có. Dùng flag -v:
curlie -v GET httpbin.org/get
Lệnh này in chi tiết request/response, rất hữu ích để debug header, redirect, TLS hoặc xác thực.
Kết luận
curlie là một công cụ nhỏ nhưng hữu ích nếu bạn thường xuyên kiểm tra API trong terminal. Nó cho bạn cú pháp gọn và output dễ đọc kiểu HTTPie, đồng thời vẫn dựa trên curl để thực hiện request.
Hãy dùng curlie cho các tác vụ nhanh: kiểm tra endpoint, đọc JSON, debug header và token. Khi request cần được lưu, chia sẻ, thêm assertion hoặc chạy trong CI, hãy chuyển nó sang workflow có cấu trúc hơn. Bạn có thể tải xuống Apidog để biến các endpoint đã khám phá trong terminal thành request có thể quản lý, kiểm thử và tự động hóa cho cả team.


Top comments (0)