Hầu hết các quy trình làm việc của nhà phát triển vẫn chạy thông qua terminal, và các công cụ bền vững qua nhiều năm có xu hướng chia sẻ một đặc điểm: chúng là mã nguồn mở. Bạn có thể đọc mã nguồn, tự lưu trữ bất cứ thứ gì chạy một máy chủ, và không bao giờ gặp phải giới hạn giấy phép người dùng hoặc rào cản "liên hệ bộ phận bán hàng". Khi một công cụ được cấp phép MIT hoặc Apache và nằm trên GitHub, bạn cũng nhận được tín hiệu bảo trì mà bạn có thể tự kiểm tra, cộng thêm quyền tự do phát triển một phiên bản khác (fork) nếu dự án đình trệ.
Bài viết này là danh sách tuyển chọn các công cụ CLI mã nguồn mở thực sự miễn phí, xứng đáng có một vị trí trong công việc phát triển API và backend hàng ngày. Mọi công cụ ở đây đều được phát hành dưới giấy phép dễ dãi (permissive) hoặc copyleft, giữ mã nguồn trên GitHub và không tốn phí để chạy. Tiêu chí chính là giấy phép và sự phụ thuộc, chứ không phải kích thước thô hay tốc độ khởi động.
Bạn sẽ nhận được bảy công cụ cho vòng lặp cốt lõi: thực hiện các yêu cầu, phân tích JSON, kiểm tra luồng HTTP, làm việc với GitHub và phơi bày máy chủ cục bộ ra internet. Mỗi mục đều nêu tên giấy phép, liên kết đến kho lưu trữ và hiển thị một lệnh thực tế để bạn có thể thấy nó hoạt động. Ngoài ra còn có một lưu ý thẳng thắn về nơi một công cụ thương mại có gói miễn phí phù hợp, được dán nhãn rõ ràng để bạn không bao giờ nhầm lẫn nó với một mục mã nguồn mở.
Điều gì làm cho một công cụ CLI trở thành “mã nguồn mở” cho phát triển
Rất nhiều công cụ miễn phí để tải xuống nhưng đóng bên trong, hoặc mã nguồn mở ở lõi với các phần hữu ích đằng sau tường phí. Đối với danh sách này, một công cụ đủ điều kiện dựa trên ba kiểm tra:
- Giấy phép. Nó được phát hành dưới giấy phép được OSI phê duyệt: MIT, Apache 2.0, BSD hoặc GPL. Điều đó cho phép bạn sử dụng nó một cách thương mại, tự lưu trữ nó và phát triển một phiên bản khác (fork) mà không cần hỏi.
- Mã nguồn trên GitHub (hoặc tương đương). Bạn có thể đọc từng dòng, mở các vấn đề (issues) và đánh giá việc bảo trì từ lịch sử commit và tần suất phát hành.
- Không có sự phụ thuộc. Không có tài khoản bắt buộc, không có chức năng đo lường từ xa (telemetry) mà bạn không thể tắt, không có thành phần máy chủ mà bạn buộc phải thuê. Nếu nó chạy một dịch vụ, bạn có thể tự chạy dịch vụ đó.
Số sao và các commit gần đây cũng quan trọng, nhưng chúng là thứ yếu. Một công cụ MIT yên tĩnh, ổn định tốt hơn một công cụ thời thượng với giấy phép "source-available" hạn chế sử dụng thương mại. Hãy kiểm tra tệp LICENSE trước khi bạn chuẩn hóa bất cứ thứ gì.
curl: client HTTP phổ quát
curl là công cụ mà hầu hết các công cụ HTTP khác được so sánh. Nó hỗ trợ hàng chục giao thức, được tích hợp sẵn trên hầu hết các hệ điều hành và được bảo trì liên tục từ năm 1996. Nó được cấp phép theo giấy phép curl dễ dãi (phái sinh từ MIT/X), và mã nguồn nằm tại github.com/curl/curl.
Đối với công việc API, curl là công cụ yêu cầu mẫu số chung thấp nhất của bạn. Nó đã được cài đặt, vì vậy bất kỳ tập lệnh hoặc tác vụ CI nào cũng có thể dựa vào nó.
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"}'
Tốt nhất ở: khả năng di động và lập kịch bản. Nếu nó chạy một shell, nó chạy curl. Giới hạn thẳng thắn là khả năng sử dụng. Đầu ra curl thô dày đặc, việc xử lý tiêu đề rất dài dòng và đọc nội dung JSON có nghĩa là phải chuyển nó đi nơi khác. Đó chính là lý do tại sao hai công cụ tiếp theo tồn tại.
HTTPie: curl với đầu ra thân thiện với người dùng
HTTPie là một client HTTP hiện đại được xây dựng cho con người, không chỉ cho các tập lệnh. Các yêu cầu đọc giống như tiếng Anh thông thường, JSON là kiểu nội dung mặc định và phản hồi được tô màu và định dạng. Nó được cấp phép theo BSD-3-Clause và mã nguồn mở tại github.com/httpie/cli.

Cài đặt nó với pip, sau đó sử dụng lệnh http:
pip install httpie
http POST httpbin.org/post name=apidog role=platform
Đó là toàn bộ yêu cầu. name=apidog tự động trở thành một trường JSON, tiêu đề và trạng thái được in với màu sắc, và nội dung được định dạng đẹp mắt mà không cần công cụ thứ hai. Tốt nhất ở: khám phá tương tác và gỡ lỗi bằng tay. Giới hạn thẳng thắn là nó là một gói Python, vì vậy nó nặng hơn so với một tệp nhị phân tĩnh duy nhất, và trong các ảnh CI nhỏ gọn, bạn vẫn có thể cần đến curl.
jq: bộ xử lý JSON mà mọi pipeline đều cần
API trả về JSON, và jq là cách bạn cắt lát nó từ dòng lệnh. Nó lọc, định hình lại và trích xuất các trường với một ngôn ngữ truy vấn nhỏ, và nó kết hợp gọn gàng với curl hoặc HTTPie trong một đường ống. jq được cấp phép MIT và được cộng đồng bảo trì tại github.com/jqlang/jq.

Chuyển một phản hồi API trực tiếp vào nó:
curl -s https://api.github.com/repos/jqlang/jq \
| jq '{name: .name, stars: .stargazers_count, license: .license.spdx_id}'
Điều đó lấy ba trường từ một phản hồi lớn và xây dựng một đối tượng gọn gàng. Tốt nhất ở: biến JSON nhiễu thành chính xác hình dạng bạn cần cho bước tiếp theo trong một tập lệnh. Giới hạn thẳng thắn là đường cong học tập. Cú pháp của jq mạnh mẽ nhưng ngắn gọn, và các phép biến đổi phức tạp có thể nhanh chóng trở nên khó hiểu. Tuy nhiên, đối với việc trích xuất trường hàng ngày, bạn sẽ học 90% những gì bạn cần trong một buổi chiều.
gh: CLI của GitHub
gh đưa GitHub vào terminal của bạn: pull request, vấn đề (issues), bản phát hành, chạy Actions và các cuộc gọi API, tất cả mà không cần mở trình duyệt. Nó được viết bằng Go, cấp phép MIT, và nằm tại github.com/cli/cli. Vì rất nhiều công việc API và backend nằm trong các kho lưu trữ GitHub, nó thuộc về bộ công cụ cốt lõi.

Một mẹo hữu ích: gh api cung cấp cho bạn một trình bao bọc được xác thực, phân trang trên các API REST và GraphQL của GitHub, vì vậy bạn không phải tự tay cuộn token vào curl.
gh api repos/cli/cli/releases --jq '.[0].tag_name'
Điều đó in thẻ bản phát hành mới nhất bằng bộ lọc jq tích hợp của gh. Tốt nhất ở: tự động hóa GitHub, từ quy trình CI đến tự động hóa phát hành. Giới hạn thẳng thắn là phạm vi; nó được thiết kế chỉ dành cho GitHub. Đối với GitLab hoặc Gitea, bạn sẽ cần các CLI tương ứng của chúng hoặc curl thông thường đối với API của chúng.
Hurl: các bài kiểm tra HTTP dạng văn bản thuần túy mà bạn có thể commit
Hurl chạy và kiểm tra các yêu cầu HTTP được định nghĩa trong một tệp văn bản thuần túy đơn giản. Bạn viết các yêu cầu, khẳng định trên mã trạng thái, tiêu đề và nội dung JSON, và chuỗi các cuộc gọi bằng cách nắm bắt các giá trị từ một phản hồi vào phản hồi tiếp theo. Nó biến "kiểm tra API" thành một tệp mà bạn đưa vào git. Hurl được viết bằng Rust, cấp phép Apache 2.0, và được Orange duy trì tại github.com/Orange-OpenSource/hurl.

Viết một tệp .hurl:
GET https://api.github.com/repos/Orange-OpenSource/hurl
HTTP 200
[Asserts]
jsonpath "$.name" == "hurl"
jsonpath "$.stargazers_count" > 1000
Sau đó chạy nó:
hurl --test repo.hurl
Hurl thoát với mã 0 khi mọi khẳng định đều vượt qua và khác 0 khi một khẳng định thất bại, điều này giúp nó thẳng thắn đưa vào CI. Tốt nhất ở: các bài kiểm tra tích hợp dễ đọc, được kiểm soát phiên bản mà toàn bộ nhóm có thể chỉnh sửa mà không cần học một framework. Giới hạn thẳng thắn là nó tập trung vào kiểm tra yêu cầu/phản hồi HTTP; nó không phải là một công cụ kiểm tra hợp đồng hoặc kiểm tra tải hoàn chỉnh. Để có cái nhìn rộng hơn về cách kiểm tra CLI phù hợp với quy trình phát triển API ưu tiên đặc tả, tệp khẳng định kết hợp tốt với nguồn chân lý OpenAPI.
cloudflared: phơi bày máy chủ cục bộ mà không cần đường hầm trả phí
Đôi khi bạn cần một URL công khai cho API đang chạy trên máy tính xách tay của bạn: một webhook callback, một bản demo, một kiểm tra di động trên một máy chủ thực. cloudflared là client đường hầm của Cloudflare, và chế độ đường hầm nhanh của nó cung cấp cho bạn một URL công khai *.trycloudflare.com tạm thời chỉ với một lệnh và không cần tài khoản. Nó được viết bằng Go, cấp phép Apache 2.0, và mã nguồn mở tại github.com/cloudflare/cloudflared.
Hướng nó đến cổng cục bộ của bạn:
cloudflared tunnel --url http://localhost:3000
Nó in ra một URL HTTPS công khai chuyển tiếp đến localhost:3000 cho đến khi bạn dừng nó. Tốt nhất ở: các đường hầm nhanh, miễn phí, tạm thời khi bạn không muốn đăng ký bất cứ thứ gì. Nếu bạn muốn ở lại hoàn toàn trong hệ sinh thái npm, localtunnel (MIT) thực hiện công việc tương tự với npx localtunnel --port 3000. Giới hạn thẳng thắn của các đường hầm nhanh: URL là ngẫu nhiên và phù du, và đối với các đường hầm được đặt tên ổn định, bạn sẽ tạo một tài khoản Cloudflare và một cấu hình, mặc dù client vẫn là mã nguồn mở dù sao đi nữa.
git: kiểm soát phiên bản dưới dạng CLI, không phải GUI
Thật dễ quên rằng git trước hết là một công cụ dòng lệnh. Mọi đặc tả API, tệp kiểm tra và kịch bản Hurl ở trên đều thuộc về một kho lưu trữ git, và CLI là nơi sức mạnh thực sự nằm ở: staging chính xác, bisect, rebase và các hooks chạy các bài kiểm tra API của bạn trước khi một commit được đưa vào. git được cấp phép GPLv2 và được phát triển công khai tại github.com/git/git.
Một ví dụ nhỏ kết nối bộ công cụ lại với nhau: một pre-commit hook chạy các bài kiểm tra Hurl của bạn trước khi mã được đưa vào.
echo 'hurl --test *.hurl' > .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
Tốt nhất ở: là nền tảng mà mọi thứ khác dựa vào. Tự lưu trữ ngay từ ngày đầu tiên, không cần máy chủ, và có thể rèn được theo mọi nghĩa. Giới hạn thẳng thắn là git là kiểm soát phiên bản, không phải lưu trữ dự án; lớp lưu trữ (GitHub, GitLab, Gitea) là một lựa chọn riêng biệt, và chỉ một số trong số đó là mã nguồn mở.
Một lời nói thẳng thắn: nơi Apidog phù hợp
Apidog không phải là mã nguồn mở, vì vậy nó không thuộc danh sách này như một mục OSS. Nó là một sản phẩm thương mại có gói miễn phí, và đáng được nhắc đến ở đây vì một lý do: các công cụ trên rất xuất sắc riêng lẻ, nhưng cuối cùng bạn phải kết nối chúng lại với nhau bằng tay. curl để thực hiện yêu cầu, jq để phân tích, Hurl để kiểm tra, một máy chủ giả lập riêng, một trình tạo tài liệu, các biến môi trường được quản lý trong cấu hình shell.

Apidog tích hợp thiết kế, thử nghiệm, giả lập và tài liệu vào một không gian làm việc, và apidog-cli đưa điều đó vào terminal. Nó là một gói npm (npm install -g apidog-cli), và nó chạy các kịch bản kiểm thử, quản lý các điểm cuối và lược đồ, tạo ra các kỳ vọng giả lập, và nhập hoặc xuất OpenAPI, tất cả với đầu ra JSON có cấu trúc mà các tập lệnh và tác nhân AI có thể đọc. apidog run thoát với mã 0 khi tất cả đều thành công và khác 0 khi thất bại, vì vậy nó thẳng thắn đưa vào CI giống như Hurl.
Khung nhìn thẳng thắn: nếu bạn muốn không có sự phụ thuộc và toàn quyền truy cập mã nguồn, bộ công cụ mã nguồn mở là lựa chọn đúng đắn, và đó là điều bài viết này nói đến. Nếu bạn không muốn kết nối bảy công cụ lại với nhau và tự duy trì cơ sở hạ tầng, gói miễn phí của Apidog cộng với CLI của nó cung cấp cho bạn một giải pháp thay thế tích hợp. Cả hai đều hợp lệ; chúng tối ưu hóa cho những điều khác nhau. Nếu bạn đi theo con đường CLI, hướng dẫn cài đặt sẽ hướng dẫn bạn qua các lệnh xác thực và lệnh đầu tiên.
Cách lựa chọn
Chọn công cụ phù hợp với công việc. Hầu hết các nhà phát triển chạy một số công cụ này cùng nhau, curl hoặc HTTPie để lấy dữ liệu, jq để phân tích, Hurl để kiểm tra, git để kiểm soát phiên bản mọi thứ.
| Công cụ | Tốt nhất cho | Cài đặt | Mã nguồn mở? | Ghi chú |
|---|---|---|---|---|
| curl | Yêu cầu di động, lập kịch bản | Cài đặt sẵn | Có (curl/kiểu MIT) | Đã có trên mọi hệ thống |
| HTTPie | Gỡ lỗi thân thiện với người dùng | pip install httpie |
Có (BSD-3-Clause) | Tô màu, JSON mặc định |
| jq | Phân tích phản hồi JSON | Trình quản lý gói / nhị phân | Có (MIT) | Chất kết dính của pipeline |
| gh | Tự động hóa GitHub | Trình quản lý gói / nhị phân | Có (MIT) | Chỉ dành cho GitHub theo thiết kế |
| Hurl | Kiểm thử HTTP có thể commit | Tệp nhị phân đơn | Có (Apache 2.0) | Thoát khác 0 khi thất bại |
| cloudflared | Đường hầm công cộng miễn phí | Tệp nhị phân đơn | Có (Apache 2.0) | Đường hầm nhanh không cần tài khoản |
| git | Kiểm soát phiên bản | Cài đặt 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 (gói miễn phí) | Thiết kế + kiểm tra + giả lập + tài liệu |
Nguyên tắc chung: hãy chọn công cụ mã nguồn mở đơn mục đích khi bạn muốn tự chủ cơ sở hạ tầng, và chọn một nền tảng tích hợp khi bạn không muốn. Nếu bạn đang cân nhắc sự đánh đổi đó trên một chuỗi công cụ đầy đủ, phân tích về Apidog như một nền tảng phát triển API toàn diện sẽ cho bạn biết con đường tích hợp thay thế những gì.
Tổng kết
Mã nguồn mở xứng đáng có chỗ đứng trong terminal nhờ khả năng kiểm tra, tự lưu trữ và không bị phụ thuộc. curl, HTTPie, jq, gh, Hurl, cloudflared và git bao quát phần cốt lõi của việc phát triển API và backend, và mỗi công cụ này đều có giấy phép bạn có thể đọc và một kho lưu trữ bạn có thể fork. Hãy bắt đầu với hai hoặc ba công cụ phù hợp với quy trình hiện tại của bạn và bổ sung phần còn lại khi cần.
Nếu bạn đang xây dựng các quy trình làm việc dựa trên tác nhân (agent-driven workflows) trên các công cụ này, các nguyên tắc ưu tiên terminal tương tự vẫn được áp dụng, và đầu ra JSON có cấu trúc trở thành mô liên kết; bài viết về trợ lý mã hóa AI cho phát triển API sẽ đi sâu hơn vào đó. Và nếu việc duy trì bảy công cụ riêng biệt bắt đầu giống như một công việc riêng, hãy Tải Apidog và thử Apidog CLI để xem con đường tích hợp trông như thế nào trước khi bạn cam kết theo bất kỳ cách nào.
