Phần lớn thời gian của một nhà phát triển backend là những vòng lặp ngắn: gửi yêu cầu đến endpoint, đọc JSON, điều chỉnh và lặp lại. Nếu dùng một GUI nặng cho các tác vụ này, bạn có thể mất nhiều thời gian chờ khởi động hơn là xử lý API.
Các công cụ CLI gọn nhẹ giúp rút ngắn vòng lặp đó. Chúng thường là một tệp binary hoặc gói chạy qua npx, khởi động nhanh, dễ đưa vào shell script và CI, đồng thời không yêu cầu thiết lập dự án phức tạp trước khi dùng được.
Bài viết này giới thiệu 10 CLI nên có trong PATH của một backend developer: gửi HTTP request, xử lý JSON, mở cổng local ra Internet, chạy HTTPS local, theo dõi thay đổi file, chạy hạ tầng phụ trợ và thực thi API test. Để xem cách các công cụ này phù hợp trong quy trình tổng thể, hãy tham khảo hướng dẫn về phát triển API.
Điều gì làm cho một CLI “gọn nhẹ”?
“Gọn nhẹ” không chỉ là ít tính năng. Với backend development, một CLI tốt cần giảm ma sát từ lúc cài đến lúc có kết quả.
-
Cài đặt đơn giản: ưu tiên binary độc lập hoặc gói nhỏ chạy trực tiếp bằng
npx. - Khởi động nhanh: công cụ nên chạy gần như ngay lập tức, đặc biệt khi được gọi liên tục trong script.
- Có kết quả hữu ích ngay: không nên bắt buộc tạo tài khoản, dự án hoặc dashboard trước khi gửi request đầu tiên.
-
Có thể kết hợp: đọc từ
stdin, ghi rastdout, trả về exit code chính xác và hoạt động tốt trong pipeline.
Các công cụ dưới đây được sắp xếp từ đơn giản, chuyên biệt đến đầy đủ hơn. curl thường đã có sẵn trên máy; các công cụ còn lại có thể cài nhanh.
1. curl
curl là tiêu chuẩn cho HTTP trên command line. Nó phù hợp khi bạn cần gửi request nhanh, viết script hoặc kiểm tra endpoint trong CI.
curl -s -X POST https://api.github.com/repos/curl/curl/issues \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Test issue"}'
Các cờ nên nhớ:
-
-s: tắt progress output để response sạch hơn. -
-i: in cả response headers. -
-w '%{http_code}': chỉ in HTTP status code. -
--fail: trả exit code khác0nếu gặp response4xxhoặc5xx.
Ví dụ kiểm tra health endpoint trong CI:
curl --fail --silent --show-error \
https://api.example.com/health
Tốt nhất cho: shell script, health check CI và request cần dễ sao chép/chia sẻ.
Hạn chế thực tế: cú pháp cờ dài; JSON body và header phải tự quản lý thủ công.
2. HTTPie
HTTPie cung cấp trải nghiệm gửi request thân thiện hơn curl. JSON được hỗ trợ mặc định, output được format đẹp và request body có cú pháp ngắn gọn.
http POST httpbin.org/post name=apidog role=api-tool active:=true
Lệnh trên gửi JSON:
{
"name": "apidog",
"role": "api-tool",
"active": true
}
Quy tắc cú pháp:
-
key=value: gửi string. -
key:=value: gửi giá trị JSON thô. -
Header:value: thêm HTTP header.
Ví dụ thêm authorization header:
http GET https://api.example.com/users \
Authorization:"Bearer $TOKEN"
Tốt nhất cho: khám phá API tương tác khi khả năng đọc response quan trọng.
Hạn chế thực tế: đây là gói Python, nên cần Python runtime và cold start có thể chậm hơn binary native.
3. xh
xh giữ lại cú pháp quen thuộc của HTTPie nhưng được phát hành dưới dạng binary Rust độc lập. Nó phù hợp khi bạn thích trải nghiệm HTTPie nhưng muốn startup nhanh và ít dependency hơn.
xh POST httpbin.org/post name=apidog age:=24
Bạn vẫn dùng được cú pháp name=value, age:=24 và header theo kiểu HTTPie, nhưng có thể đưa công cụ này vào container hoặc CI image mà không cần kéo theo Python.
Dự án xh trên GitHub cung cấp binary cho Linux, macOS và Windows.
Tốt nhất cho: request tương tác, script và container cần HTTP client nhanh, không phụ thuộc runtime.
Hạn chế thực tế: không hỗ trợ toàn bộ hệ sinh thái plugin của HTTPie.
4. jq
jq là công cụ quan trọng để xử lý JSON từ bất kỳ HTTP client nào. Thay vì đọc toàn bộ response, bạn có thể trích xuất đúng trường cần dùng.
curl -s https://api.github.com/repos/stedolan/jq \
| jq '.stargazers_count'
Ví dụ lấy danh sách tên từ mảng:
curl -s https://api.example.com/projects \
| jq '.items[] | .name'
Ví dụ lọc các phần tử đang hoạt động:
jq '.items[] | select(.active)'
Dùng -r khi cần output raw để gán vào shell variable:
API_URL=$(curl -s https://api.example.com/config | jq -r '.url')
Tốt nhất cho: lọc, trích xuất và biến đổi JSON trong script hoặc CI.
Hạn chế thực tế: các biểu thức lồng nhau có thể khó đọc; tuy nhiên truy cập field đơn giản rất dễ dùng.
5. gh — GitHub CLI
gh đưa workflow GitHub vào terminal. Sau khi xác thực một lần bằng gh auth login, bạn có thể tạo PR, xem CI, theo dõi workflow và gọi GitHub API mà không tự quản lý token trong từng lệnh.
gh pr create \
--title "Add rate limiting" \
--body "Closes #42" \
--base main
Một số lệnh hữu ích:
# Theo dõi trạng thái kiểm tra của PR hiện tại
gh pr checks --watch
# Theo dõi GitHub Actions workflow đang chạy
gh run watch
# Gọi endpoint GitHub API đã xác thực
gh api repos/{owner}/{repo}/issues
Tốt nhất cho: tự động hóa PR, release, CI và GitHub API trong terminal.
Hạn chế thực tế: chỉ hữu ích nếu team dùng GitHub; không thay thế CLI cho GitLab hoặc Bitbucket.
6. ngrok
ngrok mở một đường hầm an toàn từ Internet đến cổng local. Đây là công cụ hữu ích khi phát triển webhook, OAuth callback hoặc cần chia sẻ server đang chạy trên máy với đồng đội.
ngrok http 8080
Lệnh này tạo một URL công khai dạng https://... và chuyển tiếp traffic đến localhost:8080.
Khi debug webhook, mở trang inspect cục bộ:
http://127.0.0.1:4040
Tại đây bạn có thể xem request đã đi qua tunnel và phát lại request để kiểm tra handler.
Tốt nhất cho: webhook development, callback từ dịch vụ bên thứ ba và demo server local.
Hạn chế thực tế: đây là dịch vụ thương mại có gói miễn phí; URL có thể thay đổi giữa các phiên và bị giới hạn tốc độ.
7. mkcert
mkcert tạo certificate HTTPS được hệ điều hành và trình duyệt tin cậy cho môi trường local. Nó giúp bạn chạy https://localhost mà không gặp cảnh báo certificate tự ký.
mkcert -install
mkcert localhost 127.0.0.1 myapp.local
-
mkcert -install: tạo và cài local certificate authority một lần. - Lệnh thứ hai: tạo certificate và private key cho các hostname/IP đã chỉ định.
Sau đó, cấu hình dev server hoặc reverse proxy sử dụng các file certificate được tạo.
mkcert đặc biệt hữu ích khi kiểm tra:
- OAuth redirect URI yêu cầu HTTPS.
- Secure cookie.
- Service worker.
- API chỉ hoạt động trên secure context.
Tốt nhất cho: HTTPS local đáng tin cậy, gần với môi trường production.
Hạn chế thực tế: chỉ dùng cho development. Không dùng certificate của mkcert trong production và cần bảo vệ local root CA key.
8. watchexec
watchexec chạy lại lệnh khi file thay đổi. Bạn có thể dùng nó để tự động restart server hoặc chạy test ngay sau khi lưu file.
watchexec -e py -r 'pytest tests/'
Trong ví dụ này:
-
-e py: chỉ theo dõi file Python. -
-r: restart tiến trình đang chạy thay vì tạo thêm tiến trình mới.
Ví dụ cho Go:
watchexec -r 'go run .'
Ví dụ cho JavaScript:
watchexec 'npm test'
Theo mặc định, watchexec tôn trọng .gitignore, giúp tránh trigger lại vì build artifact hoặc dependency directory.
Tốt nhất cho: vòng lặp edit-run-test nhanh, không phụ thuộc framework hoặc ngôn ngữ.
Hạn chế thực tế: chỉ restart process; không cung cấp hot-module reload hoặc giữ state trong process.
9. Docker CLI
Docker CLI là công cụ nặng nhất trong danh sách, nhưng rất hữu ích khi bạn cần chạy dependency local có thể tái tạo: PostgreSQL, Redis, RabbitMQ hoặc bất kỳ service nào có container image.
docker run --rm \
-e POSTGRES_PASSWORD=dev \
-p 5432:5432 \
postgres:16
Ý nghĩa các cờ:
-
--rm: xóa container khi dừng. -
-e: đặt environment variable. -
-p 5432:5432: map cổng container sang máy local.
Ứng dụng của bạn có thể kết nối đến:
localhost:5432
Ví dụ chạy Redis:
docker run --rm -p 6379:6379 redis:7
Tốt nhất cho: chạy dịch vụ phụ trợ cho local development và integration test mà không cài trực tiếp vào hệ điều hành.
Hạn chế thực tế: cần Docker daemon, tài nguyên đĩa và bộ nhớ. Tuy nhiên, đây vẫn là lựa chọn hiệu quả cho local infrastructure có thể tái tạo.
10. apidog-cli
Khi làm việc với API trên terminal, bạn thường cần nhiều hơn một HTTP request: endpoint, schema, environment, mock expectation và test scenario cần được quản lý cùng một dự án API.
Apidog cung cấp apidog-cli, một CLI cài qua npm để làm việc với tài nguyên API mà không cần mở ứng dụng desktop.
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run \
-t <scenario_id> \
-e <env_id> \
-r cli
apidog run thực thi test scenario đã lưu với environment được chọn và in kết quả theo từng bước ra terminal. Lệnh trả về:
- Exit code
0khi toàn bộ assertion thành công. - Exit code khác
0khi có test thất bại.
Điều này cho phép đưa trực tiếp vào CI pipeline:
apidog run -t "$SCENARIO_ID" -e "$ENV_ID" -r cli
Ngoài chạy test, CLI còn có các nhóm lệnh cho:
-
endpointvàschema: thiết kế API. -
importvàexport: di chuyển đặc tả OpenAPI, Swagger hoặc Postman. -
mock: quản lý mock expectation. -
environmentvàvariables: quản lý cấu hình theo môi trường.
Output là JSON có cấu trúc với agentHints.nextSteps, vì vậy CLI cũng phù hợp với trợ lý mã hóa AI trong phát triển API.
Xem thêm:
Tốt nhất cho: chạy API test scenario trong CI và quản lý tài nguyên dự án từ script, đặc biệt trong quy trình phát triển API ưu tiên đặc tả.
Lưu ý: Apidog không phải mã nguồn mở; đây là sản phẩm thương mại có gói miễn phí. CLI giúp kết nối request, mock, test và tài nguyên API vào cùng một dự án. Nền tảng Apidog đầy đủ cung cấp GUI trên cùng dự án đó.
Cách chọn công cụ
Các công cụ này bổ sung cho nhau thay vì thay thế nhau. Một workflow backend thực tế thường gồm HTTP client, JSON processor, tunnel, file watcher và test runner.
| Công cụ | Tốt nhất cho | Cài đặt | Mã nguồn mở? |
|---|---|---|---|
| curl | Request bằng script, health check CI | Có sẵn trên nhiều hệ thống | Có (giấy phép curl) |
| HTTPie | Request tương tác, dễ đọc | pip install httpie |
Có (BSD) |
| xh | Cú pháp HTTPie, tốc độ native |
cargo install xh / binary |
Có (MIT) |
| jq | Lọc response JSON |
brew install jq / binary |
Có (MIT) |
| gh | Tự động hóa GitHub PR và CI |
brew install gh / binary |
Có (MIT) |
| ngrok | Public localhost, webhook | Tải binary | Không (freemium) |
| mkcert | HTTPS local đáng tin cậy |
brew install mkcert / binary |
Có (BSD) |
| watchexec | Chạy lại khi file thay đổi | cargo install watchexec-cli |
Có (Apache-2.0) |
| Docker CLI | Dịch vụ phụ trợ dùng một lần | Cài Docker | Có (Apache-2.0) |
| apidog-cli | Chạy test scenario, quản lý dự án API | npm install -g apidog-cli |
Không (freemium) |
Một lựa chọn thực dụng:
-
Gửi request: dùng
xhhoặc HTTPie khi làm việc tương tác; dùngcurltrong script. -
Đọc response JSON: dùng
jq. -
Nhận webhook từ bên ngoài: dùng
ngrok. -
Chạy HTTPS local: dùng
mkcert. -
Tự động chạy lại code/test: dùng
watchexec. - Khởi tạo database hoặc cache local: dùng Docker.
-
Chạy API test và quản lý API project: dùng
apidog-cli.
Tổng kết
Một bộ CLI tốt cho backend không cần quá nhiều công cụ. Chỉ cần vài công cụ nhỏ, nhanh và có thể ghép nối:
-
curlhoặcxhgửi request. -
jqđọc và biến đổi JSON. -
ngrokmở localhost ra Internet. -
mkcerttạo HTTPS local. -
watchexecrút ngắn vòng lặp edit-run. - Docker chạy hạ tầng dùng một lần.
-
apidog-clikết nối terminal với API project, environment và test scenario của team.
apidog-cli đặc biệt hữu ích khi endpoint và test chạy trong CI cần đồng bộ với thiết kế API của team. Tải Apidog để thiết lập dự án, sau đó chạy test và tự động hóa workflow từ terminal trong pipeline CI.
Top comments (0)