DEV Community

Cover image for Công cụ CLI mã nguồn mở miễn phí cho nhà phát triển
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

Công cụ CLI mã nguồn mở miễn phí cho nhà phát triển

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.

Dùng thử Apidog ngay hôm nay

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.

  1. 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.

  2. 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.

  3. 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.

logo curl

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

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.

HTTPie animation

Cài đặt bằng pip, sau đó dùng lệnh http:

pip install httpie
http POST httpbin.org/post name=apidog role=platform
Enter fullscreen mode Exit fullscreen mode

Trong lệnh trên, name=apidogrole=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.

Giao diện jq

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

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.

GitHub CLI

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

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ì.

Hurl

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

Chạy kiểm thử:

hurl --test repo.hurl
Enter fullscreen mode Exit fullscreen mode

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

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

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

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

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

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:

  1. Dùng curljq nếu cần script API đơn giản.
  2. Thêm HTTPie nếu thường xuyên debug thủ công.
  3. Thêm Hurl nếu muốn commit API test cùng code.
  4. Dùng Git hook để buộc kiểm thử chạy trước commit.
  5. 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)