Bạn cần một API giả để phát triển ngay trong 30 giây—không cần dịch vụ lưu trữ, Docker Compose hay giao diện để nhấp qua. Chỉ cần một lệnh đọc tệp cấu hình và phục vụ phản hồi trên localhost. Một lightweight mock server cho phép frontend hoặc test gọi các endpoint thực tế trong khi backend vẫn đang được xây dựng. Bài viết này hướng dẫn chọn và chạy nhanh sáu công cụ mock CLI, từ công cụ npx không cần cài đặt đến máy chủ JVM và quy trình tích hợp với Apidog CLI. Nếu cần so sánh thêm cả GUI lẫn dịch vụ lưu trữ, xem các công cụ giả lập API tốt nhất.
Điều gì khiến một công cụ giả lập CLI trở nên “nhẹ”?
“Nhẹ” không chỉ là ít tính năng; đó là khả năng đi từ tệp cấu hình đến endpoint hoạt động với ít cản trở nhất. Khi chọn công cụ, hãy đánh giá bốn tiêu chí:
-
Dung lượng cài đặt và runtime: công cụ Node chạy qua
npxthường chỉ cần Node.js. Máy chủ JVM cần Java và tệp.jarlớn hơn. - Tốc độ khởi động: mock server nên chạy gần như ngay lập tức để phù hợp với vòng lặp phát triển.
- Thời gian đến phản hồi đầu tiên: lý tưởng là một tệp đầu vào và một lệnh.
- Khả năng script/CI: không yêu cầu tài khoản, dashboard hoặc bước GUI để chạy mock.
Prism, Mockoon CLI và json-server là các lựa chọn có thể chạy bằng npx mà không cần cài đặt toàn cục.
Prism (Stoplight)
Prism biến đặc tả OpenAPI thành mock server chỉ với một lệnh. Nếu dự án đã có OpenAPI, đây là lựa chọn nhanh để phục vụ các paths, examples và schema hiện có.
npx @stoplight/prism-cli mock ./openapi.yaml
Lệnh này khởi động server tại http://127.0.0.1:4010.
Cách Prism tạo phản hồi
- Prism ưu tiên trả về
exampleđược định nghĩa trong response. - Nếu không có example, nó sinh dữ liệu hợp lệ dựa trên schema.
- Nó xác thực request theo đặc tả; request không hợp lệ có thể nhận
422.
Cài đặt toàn cục nếu muốn bỏ npx:
npm install -g @stoplight/prism-cli
Tốt nhất cho: nhóm phát triển theo hướng spec-first, cần mock bám sát hợp đồng API. Prism được cấp phép Apache-2.0 và hỗ trợ OpenAPI 3.1, 3.0, 2.0 và Postman collections.
Hạn chế thực tế: Prism không có trạng thái. Một POST không lưu dữ liệu để request GET tiếp theo đọc lại. Chất lượng mock phụ thuộc trực tiếp vào schema và example trong đặc tả. Đây là lựa chọn phù hợp khi cần mock chính xác hợp đồng, đặc biệt trong quy trình dùng các công cụ giả lập REST API.
Mockoon CLI
Mockoon CLI chạy mock API từ tệp environment của Mockoon hoặc đặc tả OpenAPI JSON/YAML. Bạn có thể thiết kế route bằng ứng dụng Mockoon Desktop, sau đó chạy cùng environment ở chế độ headless trong CI hoặc server.
npx @mockoon/cli start --data ./mockoon-env.json --port 3000
Có thể trỏ --data đến:
- Tệp environment đã export từ Mockoon Desktop.
- Tệp OpenAPI định dạng JSON hoặc YAML.
CLI sẽ di chuyển environment cũ trong bộ nhớ nếu cần, không ghi đè tệp gốc.
Cài đặt toàn cục:
npm install -g @mockoon/cli
Tốt nhất cho: nhóm thiết kế mock trực quan bằng GUI nhưng cần chạy mock không giao diện trong CI. Công cụ được cấp phép MIT và có Docker image chính thức.
Hạn chế thực tế: các route phong phú nhất thường được tạo trong ứng dụng Desktop. Chỉnh sửa trực tiếp tệp JSON environment có thể phức tạp. Nếu muốn tự duy trì toàn bộ mock trong một tệp đơn giản, Prism hoặc json-server phù hợp hơn.
json-server
json-server là lựa chọn nhanh khi bạn chưa có OpenAPI. Chỉ cần một tệp JSON, công cụ sẽ sinh REST API với các thao tác GET, POST, PUT, PATCH và DELETE.
echo '{ "posts": [{ "id": 1, "title": "hello" }] }' > db.json
npx json-server db.json
Sau khi chạy, gọi endpoint:
curl http://localhost:3000/posts
Kết quả sẽ chứa collection posts trong db.json.
Điểm mạnh: CRUD có trạng thái
Không giống Prism, request POST thực sự thêm dữ liệu và ghi lại vào db.json:
curl -X POST http://localhost:3000/posts \
-H "Content-Type: application/json" \
-d '{ "title": "Bài viết mới" }'
Bạn cũng có thể dùng query parameter để lọc, sắp xếp và phân trang. Dòng 1.x theo dõi thay đổi của tệp và tải lại mặc định.
Cài đặt toàn cục:
npm install -g json-server
Tốt nhất cho: frontend developer cần REST backend hoạt động trong vài phút trước khi API thật tồn tại. Đây là một trong các lựa chọn máy chủ giả lập nhẹ cho RESTful API không yêu cầu đặc tả.
Hạn chế thực tế: json-server giả định mô hình REST theo tài nguyên. Các route đặc biệt, endpoint không theo REST hoặc điều kiện khớp header nghiêm ngặt không phải thế mạnh của công cụ này.
MockServer
MockServer phù hợp khi bạn cần kiểm soát chính xác request nào sẽ nhận response nào. Thay vì chỉ phục vụ schema hoặc dữ liệu, bạn định nghĩa expectation dựa trên method, path, header, query hoặc body.
java -jar mockserver-netty-5.15.0-no-dependencies.jar -p 1080
MockServer chạy trên cổng 1080. Sau đó, cấu hình expectation qua REST API của MockServer hoặc bằng mã nguồn.
Ví dụ khởi động từ Node.js với package chính thức:
npm install mockserver-node
const mockserver = require("mockserver-node");
mockserver.start_mockserver({
serverPort: 1080,
});
MockServer cho phép trả về response tùy chỉnh, bao gồm độ trễ và lỗi, hữu ích để test timeout hoặc luồng xử lý lỗi.
Tốt nhất cho: integration test cần khớp request chi tiết và kiểm soát chặt phản hồi. Công cụ được cấp phép Apache-2.0, hỗ trợ HTTP, HTTPS và nhiều hơn nữa trên một cổng.
Hạn chế thực tế: đây là máy chủ JVM nên nặng hơn và khởi động chậm hơn các công cụ Node. Việc định nghĩa expectation cũng phức tạp hơn việc trỏ trực tiếp vào OpenAPI. Nếu cần đánh giá thêm các lựa chọn, xem các lựa chọn thay thế MockServer.
WireMock (độc lập)
WireMock là mock server JVM phổ biến trong hệ sinh thái Java. Bản standalone chạy cùng engine mà bạn có thể nhúng vào JUnit test, giúp tái sử dụng mock giữa môi trường local và test suite.
java -jar wiremock-standalone.jar --port 8080
WireMock phục vụ tại cổng 8080. Bạn có thể cấu hình stub qua:
- Thư mục
mappings/ - JSON API của WireMock
- Cơ chế ghi lại lưu lượng thật rồi phát lại thành stub
Khả năng record-and-replay hữu ích khi mock API bên thứ ba mà bạn không kiểm soát. WireMock cũng có Docker image chính thức:
docker run -p 8080:8080 wiremock/wiremock
Tốt nhất cho: nhóm JVM muốn dùng chung một mock engine cho local development và test automation, đồng thời cần ghi/phát lại request. WireMock được cấp phép Apache-2.0.
Hạn chế thực tế: WireMock yêu cầu Java và có thời gian khởi động cao hơn giải pháp Node. Tệp JSON mapping mạnh nhưng cần thời gian học hơn mock dữ liệu một tệp. Nếu làm việc chủ yếu với JavaScript hoặc browser mocking, xem các lựa chọn thay thế Mock Service Worker (MSW).
Apidog CLI
Các công cụ trên giải quyết từng phần riêng lẻ: phục vụ OpenAPI, tạo CRUD nhanh hoặc khớp request chi tiết. Apidog đi theo hướng tích hợp: thiết kế API, mock, kiểm thử và tài liệu cùng nằm trong một dự án. Apidog CLI cho phép điều khiển các tài nguyên đó từ terminal.
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í. Mock thông minh được tạo từ endpoint đã định nghĩa và phản hồi tuân theo kiểu trường, schema và cách đặt tên. Khi cần phản hồi cố định cho một request cụ thể, bạn có thể thêm mock expectation vào dự án.
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog mock --help
Nhóm lệnh mock hoạt động với mock expectation của dự án trong script và CI. CLI cũng có lệnh cho endpoint, schema, environment và test run. Đầu ra dùng JSON có cấu trúc, bao gồm trường agentHints.nextSteps, phù hợp cho cả developer và AI agent.
Xem thêm trong hướng dẫn hoàn chỉnh Apidog CLI.
Tốt nhất cho: nhóm muốn quản lý mock, đặc tả và kiểm thử trong cùng một dự án thay vì ghép nhiều công cụ riêng lẻ. Tải xuống Apidog để thử mock server tích hợp và CLI với dự án của bạn.
Hạn chế thực tế: Apidog là một nền tảng, không phải binary một tệp. Bạn cần dự án và đăng nhập, trong khi json-server có thể chạy ngay từ một tệp JSON. Nếu chỉ cần mock dùng một lần, công cụ nhẹ hơn thường phù hợp hơn. Nếu API đã được thiết kế trong Apidog, mock đã có sẵn trong cùng quy trình làm việc.
Cách chọn
Chọn theo đầu vào bạn đang có và mức độ kiểm soát cần thiết:
| Công cụ | Chọn khi | Lệnh bắt đầu |
|---|---|---|
| Prism | Đã có OpenAPI và cần mock bám sát hợp đồng | npx @stoplight/prism-cli mock openapi.yaml |
| Mockoon CLI | Đã thiết kế mock bằng Mockoon Desktop hoặc có OpenAPI | npx @mockoon/cli start --data mockoon-env.json |
| json-server | Chỉ có dữ liệu JSON và cần REST CRUD có trạng thái | npx json-server db.json |
| MockServer | Cần khớp request chính xác theo header, query hoặc body | java -jar mockserver-netty-*.jar -p 1080 |
| WireMock | Dùng Java/JVM và cần record-and-replay hoặc tích hợp test | java -jar wiremock-standalone.jar --port 8080 |
| Apidog CLI | Muốn mock, spec và test trong một dự án | npm install -g apidog-cli |
Quy tắc nhanh:
- Chọn công cụ
npxkhi cần tốc độ. - Chọn MockServer hoặc WireMock khi cần điều kiện khớp request sâu.
- Chọn Apidog khi cần một quy trình thống nhất thay vì nhiều công cụ rời rạc.
Nếu chưa chắc có nên dùng mock hay không, xem các trường hợp sử dụng giả lập API.
Tổng kết
Lightweight mocking bắt đầu bằng một câu hỏi: bạn đang có gì?
- Có OpenAPI: dùng Prism hoặc Mockoon CLI.
- Có dữ liệu JSON: dùng json-server.
- Cần request matching nghiêm ngặt: dùng MockServer hoặc WireMock.
- Cần quản lý mock cùng thiết kế và kiểm thử: dùng Apidog CLI.
Cả sáu công cụ đều có thể chạy từ terminal và phù hợp với CI. Bắt đầu bằng công cụ nhỏ nhất đáp ứng trường hợp sử dụng của bạn, chỉ tăng độ phức tạp khi thực sự cần. Để thử quy trình tích hợp, tải xuống Apidog và tạo mock server từ thiết kế API của bạn.
Top comments (0)