DEV Community

Cover image for Top công cụ CLI gọn nhẹ dành cho lập trình viên
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

Top công cụ CLI gọn nhẹ dành cho lập trình viên

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.

Dùng thử Apidog ngay hôm nay

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 ra stdout, 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"}'
Enter fullscreen mode Exit fullscreen mode

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ác 0 nếu gặp response 4xx hoặc 5xx.

Ví dụ kiểm tra health endpoint trong CI:

curl --fail --silent --show-error \
  https://api.example.com/health
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Lệnh trên gửi JSON:

{
  "name": "apidog",
  "role": "api-tool",
  "active": true
}
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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'
Enter fullscreen mode Exit fullscreen mode

Ví dụ lấy danh sách tên từ mảng:

curl -s https://api.example.com/projects \
  | jq '.items[] | .name'
Enter fullscreen mode Exit fullscreen mode

Ví dụ lọc các phần tử đang hoạt động:

jq '.items[] | select(.active)'
Enter fullscreen mode Exit fullscreen mode

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')
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
  • 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/'
Enter fullscreen mode Exit fullscreen mode

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 .'
Enter fullscreen mode Exit fullscreen mode

Ví dụ cho JavaScript:

watchexec 'npm test'
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Ý 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
Enter fullscreen mode Exit fullscreen mode

Ví dụ chạy Redis:

docker run --rm -p 6379:6379 redis:7
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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 0 khi toàn bộ assertion thành công.
  • Exit code khác 0 khi 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
Enter fullscreen mode Exit fullscreen mode

Ngoài chạy test, CLI còn có các nhóm lệnh cho:

  • endpointschema: thiết kế API.
  • importexport: di chuyển đặc tả OpenAPI, Swagger hoặc Postman.
  • mock: quản lý mock expectation.
  • environmentvariables: 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 xh hoặc HTTPie khi làm việc tương tác; dùng curl trong 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:

  • curl hoặc xh gửi request.
  • jq đọc và biến đổi JSON.
  • ngrok mở localhost ra Internet.
  • mkcert tạo HTTPS local.
  • watchexec rút ngắn vòng lặp edit-run.
  • Docker chạy hạ tầng dùng một lần.
  • apidog-cli kế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)