Hầu hết quy trình làm việc của nhà phát triển vẫn diễn ra trong terminal. Các công cụ bền vững qua nhiều năm thường có một điểm chung: mã nguồn mở. Bạn có thể đọc mã nguồn, tự lưu trữ dịch vụ cần thiết, không bị giới hạn số người dùng hoặc buộc phải “liên hệ bộ phận bán hàng”. Với giấy phép như MIT hoặc Apache và kho mã trên GitHub, bạn cũng có thể tự kiểm tra mức độ bảo trì của dự án và fork nếu dự án không còn được phát triển.
Bài viết này tuyển chọn các công cụ CLI mã nguồn mở, miễn phí để dùng hằng ngày trong phát triển API và backend. Mỗi công cụ có giấy phép rõ ràng, mã nguồn công khai và không yêu cầu trả phí để chạy. Tiêu chí chính là giấy phép và mức độ phụ thuộc, không phải kích thước nhị phân hay tốc độ khởi động.
Bạn sẽ có bảy công cụ cho vòng lặp phát triển cốt lõi:
- Gửi yêu cầu HTTP
- Phân tích JSON
- Kiểm thử luồng HTTP
- Tự động hóa GitHub
- Phơi bày máy chủ cục bộ ra internet
- Quản lý phiên bản mã và tệp kiểm thử
Mỗi mục gồm giấy phép, kho mã nguồn và một lệnh có thể chạy ngay.
Điều gì khiến một CLI thực sự là mã nguồn mở?
Nhiều công cụ miễn phí để tải xuống nhưng mã nguồn đóng, hoặc chỉ mở phần lõi trong khi các tính năng quan trọng nằm sau tường phí. Với danh sách này, hãy kiểm tra ba điểm sau.
Giấy phép được OSI phê duyệt
Ví dụ: MIT, Apache 2.0, BSD hoặc GPL. Các giấy phép này cho phép sử dụng, kiểm tra, tự lưu trữ và fork theo điều khoản của giấy phép.Mã nguồn công khai
Bạn có thể đọc mã, xem lịch sử commit, mở issue và đánh giá tần suất phát hành.Không bị phụ thuộc bắt buộc vào dịch vụ đóng
Không bắt buộc phải có tài khoản, không có telemetry không thể tắt, và nếu công cụ cần dịch vụ máy chủ thì bạn có thể tự vận hành dịch vụ đó.
Số sao GitHub và commit gần đây hữu ích, nhưng là tiêu chí phụ. Trước khi chuẩn hóa một công cụ trong đội ngũ, hãy luôn đọc tệp LICENSE.
curl: HTTP client phổ quát
curl là chuẩn tham chiếu cho phần lớn công cụ HTTP khác. Nó hỗ trợ nhiều giao thức, thường có sẵn trên hệ điều hành phổ biến và được duy trì liên tục từ năm 1996. curl sử dụng giấy phép curl dễ dãi, phái sinh từ MIT/X.
Trong công việc API, curl là lựa chọn có tính di động cao nhất: thường đã được cài sẵn nên dễ dùng trong shell script và 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","body":"Filed from curl"}'
Phù hợp nhất cho: script, CI và môi trường tối giản.
Cần lưu ý: đầu ra thô, xử lý header dài dòng, và JSON thường cần chuyển sang công cụ khác để đọc hoặc lọc. Đó là lúc HTTPie và jq hữu ích.
HTTPie: curl với đầu ra dễ đọc hơn
HTTPie là HTTP client hướng đến trải nghiệm tương tác. Cú pháp yêu cầu dễ đọc, JSON là kiểu nội dung mặc định, còn phản hồi được tô màu và định dạng. Dự án dùng giấy phép BSD-3-Clause.
Cài đặt bằng pip, sau đó dùng lệnh http:
pip install httpie
http POST httpbin.org/post name=apidog role=platform
Trong lệnh trên, name=apidog và role=platform tự động trở thành các trường JSON. HTTPie cũng hiển thị status, header và body theo định dạng dễ đọc mà không cần thêm công cụ.
Phù hợp nhất cho: khám phá API và gỡ lỗi thủ công.
Cần lưu ý: đây là gói Python, nên nặng hơn một binary đơn lẻ. Trong image CI tối giản, curl vẫn thường là lựa chọn thực tế hơn.
jq: bộ xử lý JSON cho mọi pipeline
API thường trả về JSON, và jq giúp lọc, biến đổi và trích xuất dữ liệu trực tiếp từ dòng lệnh. jq dùng giấy phép MIT và kết hợp tốt với curl hoặc HTTPie.
Ví dụ: chỉ lấy tên repository, số sao và giấy phép từ phản hồi GitHub API.
curl -s https://api.github.com/repos/jqlang/jq \
| jq '{name: .name, stars: .stargazers_count, license: .license.spdx_id}'
Lệnh này biến một phản hồi lớn thành đối tượng JSON nhỏ, phù hợp để dùng ở bước tiếp theo của pipeline.
Phù hợp nhất cho: trích xuất và định hình dữ liệu JSON trong script.
Cần lưu ý: cú pháp jq ngắn gọn nhưng có đường cong học tập. Tuy nhiên, các tác vụ thường ngày như chọn trường, lọc mảng và tạo object có thể học nhanh.
gh: GitHub CLI
gh đưa các thao tác GitHub vào terminal: pull request, issue, release, GitHub Actions và API. Công cụ được viết bằng Go và dùng giấy phép MIT.
Một tính năng thực tế là gh api: gọi GitHub REST hoặc GraphQL API với xác thực và phân trang tích hợp sẵn.
gh api repos/cli/cli/releases --jq '.[0].tag_name'
Lệnh này in tag của bản phát hành mới nhất. Bạn không cần tự thêm token vào header như khi dùng curl.
Phù hợp nhất cho: tự động hóa GitHub trong local workflow và CI.
Cần lưu ý: gh được thiết kế riêng cho GitHub. Với GitLab hoặc Gitea, hãy dùng CLI tương ứng hoặc gọi API trực tiếp bằng curl.
Hurl: kiểm thử HTTP dạng text có thể commit
Hurl chạy các yêu cầu HTTP được mô tả trong tệp văn bản và kiểm tra status code, header hoặc dữ liệu JSON. Bạn cũng có thể lấy giá trị từ phản hồi trước để dùng cho yêu cầu sau. Hurl được viết bằng Rust, dùng giấy phép Apache 2.0, và được Orange duy trì.
Tạo tệp repo.hurl:
GET https://api.github.com/repos/Orange-OpenSource/hurl
HTTP 200
[Asserts]
jsonpath "$.name" == "hurl"
jsonpath "$.stargazers_count" > 1000
Chạy kiểm thử:
hurl --test repo.hurl
Hurl trả mã thoát 0 khi mọi assertion thành công và mã khác 0 khi có assertion thất bại. Điều này giúp tích hợp trực tiếp vào CI.
Phù hợp nhất cho: kiểm thử tích hợp HTTP dễ đọc, có thể review và commit cùng mã nguồn.
Cần lưu ý: Hurl tập trung vào kiểm tra request/response HTTP, không thay thế hoàn toàn công cụ kiểm thử hợp đồng hoặc kiểm thử tải. Khi làm việc theo quy trình phát triển API ưu tiên đặc tả, hãy dùng các tệp assertion cùng OpenAPI như nguồn chân lý.
cloudflared: phơi bày máy chủ cục bộ bằng URL công khai
Khi cần kiểm tra webhook, demo API hoặc test từ thiết bị thật, bạn cần một URL công khai trỏ về máy cục bộ. cloudflared là tunnel client của Cloudflare. Chế độ Quick Tunnel cung cấp URL *.trycloudflare.com tạm thời mà không cần tài khoản. Công cụ được viết bằng Go và dùng giấy phép Apache 2.0.
Chạy tunnel đến cổng local:
cloudflared tunnel --url http://localhost:3000
Lệnh sẽ in một URL HTTPS công khai, chuyển tiếp đến localhost:3000 cho đến khi bạn dừng tiến trình.
Phù hợp nhất cho: tunnel nhanh, miễn phí và tạm thời.
Nếu muốn dùng hệ sinh thái npm, localtunnel với giấy phép MIT cung cấp lựa chọn tương tự:
npx localtunnel --port 3000
Cần lưu ý: URL của Quick Tunnel là ngẫu nhiên và tạm thời. Với tunnel ổn định có tên riêng, bạn cần tạo tài khoản Cloudflare và cấu hình tunnel, dù client vẫn là mã nguồn mở.
git: kiểm soát phiên bản bằng CLI
git trước hết là công cụ dòng lệnh. Đặc tả API, tệp OpenAPI, kịch bản Hurl và script CI đều nên nằm trong repository Git. Git dùng giấy phép GPLv2.
Một cách áp dụng thực tế là chạy Hurl trước mỗi commit bằng Git hook:
echo 'hurl --test *.hurl' > .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
Hook này chạy toàn bộ tệp *.hurl trước khi commit. Nếu một kiểm thử thất bại, Git sẽ chặn commit.
Phù hợp nhất cho: quản lý phiên bản, review thay đổi và tự động hóa kiểm tra trước commit.
Cần lưu ý: Git là hệ thống kiểm soát phiên bản, không phải nền tảng lưu trữ dự án. GitHub, GitLab và Gitea là các lớp lưu trữ riêng biệt với mô hình triển khai và giấy phép khác nhau.
Một lời nói thẳng thắn: Apidog phù hợp ở đâu?
Apidog không phải phần mềm mã nguồn mở, nên không thuộc danh sách OSS này. Đây là sản phẩm thương mại có gói miễn phí. Lý do nó đáng được đề cập là các công cụ CLI ở trên rất tốt khi đứng riêng lẻ, nhưng bạn phải tự kết nối chúng: curl để gửi request, jq để xử lý JSON, Hurl để kiểm thử, cùng cấu hình môi trường, mock server và tài liệu API.
Apidog kết hợp thiết kế, kiểm thử, mock và tài liệu trong một workspace. apidog-cli đưa một phần quy trình đó vào terminal.
npm install -g apidog-cli
Theo mô tả, CLI có thể chạy kịch bản kiểm thử, quản lý endpoint và schema, tạo kỳ vọng mock, cũng như nhập hoặc xuất OpenAPI. apidog run trả mã 0 khi chạy thành công và mã khác 0 khi thất bại, nên có thể tích hợp vào CI tương tự Hurl.
Nếu ưu tiên không phụ thuộc dịch vụ bên ngoài và toàn quyền truy cập mã nguồn, bộ công cụ OSS là lựa chọn phù hợp. Nếu không muốn tự ghép và duy trì nhiều công cụ, gói miễn phí của Apidog cùng CLI là một lựa chọn tích hợp. Hướng dẫn cài đặt trình bày các lệnh xác thực và lệnh đầu tiên.
Cách lựa chọn
Trong thực tế, bạn thường dùng nhiều công cụ cùng lúc:
- curl hoặc HTTPie để gửi yêu cầu
- jq để lọc JSON
- Hurl để kiểm thử HTTP
- gh để tự động hóa GitHub
- cloudflared để nhận webhook hoặc chia sẻ môi trường local
- git để lưu version cho toàn bộ cấu hình và kiểm thử
| Công cụ | Phù hợp nhất cho | Cài đặt | Mã nguồn mở? | Ghi chú |
|---|---|---|---|---|
| curl | Request di động, scripting | Thường cài sẵn | Có, curl/MIT-like | Có trên phần lớn hệ thống |
| HTTPie | Gỡ lỗi dễ đọc | pip install httpie |
Có, BSD-3-Clause | Tô màu, JSON mặc định |
| jq | Phân tích JSON | Package manager hoặc binary | Có, MIT | Chất kết dính cho pipeline |
| gh | Tự động hóa GitHub | Package manager hoặc binary | Có, MIT | Dành riêng cho GitHub |
| Hurl | HTTP test có thể commit | Binary đơn | Có, Apache 2.0 | Mã thoát khác 0 khi thất bại |
| cloudflared | Tunnel công khai tạm thời | Binary đơn | Có, Apache 2.0 | Quick Tunnel không cần tài khoản |
| git | Kiểm soát phiên bản | Thường cài sẵn | Có, GPLv2 | Nền tảng cho phần còn lại |
| apidog-cli | Quy trình API tích hợp | npm i -g apidog-cli |
Không, có gói miễn phí | Thiết kế, test, mock và tài liệu |
Nguyên tắc đơn giản:
- Chọn công cụ OSS đơn mục đích khi cần quyền tự chủ hạ tầng và khả năng kiểm tra mã nguồn.
- Chọn nền tảng tích hợp khi muốn giảm số lượng công cụ và cấu hình cần tự duy trì.
Nếu đang so sánh hai hướng này cho toàn bộ chuỗi công cụ, bài viết về Apidog như một nền tảng phát triển API toàn diện mô tả cách tiếp cận tích hợp thay thế những phần nào.
Tổng kết
curl, HTTPie, jq, gh, Hurl, cloudflared và git bao phủ phần lớn nhu cầu CLI trong phát triển API và backend. Mỗi công cụ đều có giấy phép có thể kiểm tra, mã nguồn công khai và khả năng ghép vào quy trình hiện tại.
Hãy bắt đầu với hai hoặc ba công cụ giải quyết vấn đề bạn đang gặp:
- Dùng
curlvàjqnếu cần script API đơn giản. - Thêm HTTPie nếu thường xuyên debug thủ công.
- Thêm Hurl nếu muốn commit API test cùng code.
- Dùng Git hook để buộc kiểm thử chạy trước commit.
- Dùng cloudflared khi cần nhận webhook trên máy local.
Nếu bạn xây dựng quy trình dựa trên agent, đầu ra JSON có cấu trúc sẽ trở thành lớp kết nối quan trọng giữa các công cụ. Bài viết về trợ lý mã hóa AI cho phát triển API đi sâu hơn vào chủ đề này. Nếu việc duy trì nhiều công cụ riêng lẻ trở nên tốn công, hãy tải Apidog và thử Apidog CLI để đánh giá lựa chọn tích hợp.





Top comments (0)