Khi bạn đang xây dựng một frontend, gỡ lỗi cho client, hoặc học một thư viện HTTP mới, bạn thường cần một endpoint trả về JSON trông giống thật mà không cần dựng backend. Một dummy API (API giả) cung cấp chính xác điều đó: một dịch vụ công khai, miễn phí, luôn hoạt động mà bạn có thể gọi ngay bây giờ. Hướng dẫn này liệt kê các dummy API công khai tốt nhất, chỉ cho bạn cách gọi chúng, và giải thích khi nào nên ngừng mượn dữ liệu của người khác và tự xây dựng một fake REST API của riêng bạn. Nếu bạn muốn tìm hiểu sâu hơn về bức tranh tổng thể của các API công khai, hướng dẫn của MDN về việc sử dụng Fetch API rất phù hợp với tất cả những điều dưới đây.
Dummy API thực chất là gì
Một dummy API là một dịch vụ được host (lưu trữ) trả về JSON đã được định sẵn, trông giống thật cho các loại tài nguyên phổ biến: người dùng, bài đăng, sản phẩm, giỏ hàng, danh sách công việc. Bạn không cần đăng ký, không cần lưu trữ bất cứ thứ gì, và không phải lo lắng về việc làm hỏng dữ liệu sản xuất. Hầu hết chúng chấp nhận các phương thức GET, POST, PUT, PATCH và DELETE, nhưng các thao tác ghi thường là giả mạo. Máy chủ trả về payload của bạn kèm theo một ID và giả vờ đã lưu, trong khi thực tế không có gì được lưu trữ bền vững.
Đó là đặc điểm chính cần hiểu trước khi bạn dựa vào chúng. Một dummy API hoàn hảo cho việc tạo prototype (nguyên mẫu) tập trung vào đọc dữ liệu và để chứng minh rằng mã yêu cầu của bạn hoạt động. Nó không phù hợp khi bạn cần hành vi có trạng thái, các cấu trúc dữ liệu riêng của bạn hoặc các điều kiện lỗi tùy chỉnh.
Các dummy API và fake API miễn phí tốt nhất để kiểm thử
Dưới đây là các API công khai đáng biết. Tất cả đều miễn phí và không yêu cầu thiết lập backend từ phía bạn.
JSONPlaceholder
JSONPlaceholder là một dịch vụ kinh điển. Nó cung cấp sáu tài nguyên liên quan: 100 bài đăng, 500 bình luận, 100 album, 5.000 ảnh, 200 việc cần làm và 10 người dùng. Các mối quan hệ là thật, vì vậy một bài đăng có bình luận và một album có ảnh, điều này rất tốt để kiểm thử các lệnh fetch lồng nhau.
curl https://jsonplaceholder.typicode.com/posts/1
Bạn sẽ nhận lại một đối tượng bài đăng duy nhất. Các yêu cầu ghi được chấp nhận nhưng không được lưu, vì vậy một POST /posts luôn trả về một id: 101 giả mạo mỗi lần.
DummyJSON
DummyJSON cung cấp phạm vi rộng hơn. Nó cung cấp các sản phẩm, giỏ hàng, người dùng, bài đăng, bình luận, trích dẫn, việc cần làm và công thức nấu ăn, cùng với một luồng xác thực (auth flow) cung cấp cho bạn một token. Nếu bạn đang kiểm thử giao diện người dùng giỏ hàng hoặc màn hình đăng nhập, đây là lựa chọn phù hợp.
curl https://dummyjson.com/products/1
Endpoint xác thực cho phép bạn gửi (POST) tên người dùng và mật khẩu để nhận một JWT, điều này tiện lợi cho việc thực hành lưu trữ token và các yêu cầu đã xác thực mà không cần kết nối với một nhà cung cấp danh tính thực sự.
reqres.in
reqres.in tập trung vào vòng đời yêu cầu và phản hồi: liệt kê người dùng, người dùng đơn lẻ, đăng ký, đăng nhập, phản hồi trễ. Nó được xây dựng để demo phân trang và các luồng xác thực. Một điều cần biết: gói miễn phí hiện yêu cầu một header API key. Gửi x-api-key: reqres-free-v1 cùng với các yêu cầu của bạn, nếu không bạn sẽ nhận lỗi 401.
curl https://reqres.in/api/users/2 -H "x-api-key: reqres-free-v1"
Khi nào nên sử dụng từng loại
| Dummy API | Tốt nhất cho | Luồng xác thực | Khả năng lưu trữ ghi |
|---|---|---|---|
| JSONPlaceholder | Đọc lồng nhau, dữ liệu kiểu blog | Không | Giả mạo, không lưu |
| DummyJSON | Thương mại điện tử, giỏ hàng, đăng nhập | Có (token) | Giả mạo, không lưu |
| reqres.in | Demo phân trang, đăng ký/đăng nhập | Header API key | Giả mạo, không lưu |
Nếu bạn muốn có một danh mục lựa chọn rộng hơn ngoài ba loại này, phần tổng hợp các API công khai để kiểm thử bao gồm nhiều lựa chọn chuyên biệt hơn, và danh sách các API công khai miễn phí dành cho nhà phát triển hữu ích khi bạn cần dữ liệu theo chủ đề như thời tiết hoặc tiền tệ.
Cách gọi dummy API trong mã của bạn
Việc gọi một API giả giống như gọi bất kỳ endpoint HTTP nào. Dưới đây là một ví dụ fetch đơn giản trong JavaScript đọc thông tin người dùng và sau đó tạo một người dùng mới.
// Read
const res = await fetch('https://dummyjson.com/users/1');
const user = await res.json();
console.log(user.firstName);
// Write (echoed back, not persisted)
const created = await fetch('https://dummyjson.com/users/add', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ firstName: 'Ada', lastName: 'Lovelace' }),
});
console.log(await created.json()); // returns an object with a fake id
Trong Python với thư viện requests, cách làm cũng đơn giản tương tự.
import requests
r = requests.get("https://jsonplaceholder.typicode.com/todos/1")
print(r.json())
Đặt một trong hai đoạn mã này vào một tệp kiểm thử và bạn sẽ có một tích hợp hoạt động để xác nhận. Nếu bạn cần các giá trị đáng tin cậy cho các xác nhận đó, hướng dẫn về tạo dữ liệu kiểm thử API thực tế cho thấy cách tạo tên, email và dấu thời gian trông giống lưu lượng truy cập sản xuất thay vì test123.
Khi dummy API công khai không còn đủ
Các dummy API công khai rất tuyệt vời cho đến khi nhu cầu của bạn trở nên cụ thể. Bạn sẽ gặp khó khăn trong một vài tình huống phổ biến:
- Cấu trúc dữ liệu của bạn không khớp. Ứng dụng của bạn mong đợi một trường
subscription_tiervà một đối tượngbillinglồng nhau. JSONPlaceholder cung cấp cho bạnpostsvàalbums. Bạn không thể uốn cong schema của họ cho phù hợp với của bạn. - Bạn cần trạng thái. Một giỏ hàng thực tế sẽ cập nhật khi bạn thêm một mặt hàng. Dummy API quên đi yêu cầu POST của bạn ngay khi nó trả về.
- Bạn cần kiểm soát các lỗi. Kiểm thử cách giao diện người dùng của bạn xử lý lỗi 429, phản hồi 200 chậm hoặc một body bị định dạng sai là rất khó khi dịch vụ công khai luôn hoạt động đúng.
- Bạn đang xây dựng trước khi backend tồn tại. Các nhóm frontend và backend thường bắt đầu cùng lúc. Bạn cần các endpoint khớp với hợp đồng đã thỏa thuận ngay hôm nay, chứ không phải đợi đến khi API được triển khai.
Tại thời điểm đó, bạn không cần một API đi mượn. Bạn cần một fake API (API giả) của riêng mình, trả về cấu trúc dữ liệu của bạn, theo yêu cầu, với các phản hồi mà bạn kiểm soát. Đó chính là một mock API được xây dựng để kiểm thử, và đó là lúc Apidog phát huy tác dụng.
Cách xây dựng fake API của riêng bạn với Apidog
Apidog là một nền tảng API kết hợp thiết kế, kiểm thử, gỡ lỗi và mocking (tạo API giả) trong một nơi duy nhất. Chức năng mocking của nó được điều khiển bởi schema, vì vậy nó đọc cấu trúc của endpoint của bạn và tự động tạo dữ liệu giả thực tế bằng cách sử dụng các quy tắc Faker tích hợp sẵn. Bạn định nghĩa cấu trúc một lần, và mỗi yêu cầu sẽ trả về các giá trị mới, hợp lý.

Dưới đây là phiên bản ngắn gọn của quy trình làm việc.
- Tạo hoặc nhập một endpoint. Định nghĩa một API mới trong Apidog, hoặc nhập một tệp OpenAPI hoặc Swagger hiện có. Apidog đọc trực tiếp schema.
- Để mock thông minh điền dữ liệu. Đối với một trường tên là
email, Apidog trả về một email. Đối vớicreatedAt, nó trả về một dấu thời gian. Đối vớiprice, một số. Bạn có thể điều chỉnh các quy tắc này cho từng trường, ví dụ trườngcountrytrả về tên quốc gia thật thay vì các chuỗi ngẫu nhiên. - Truy cập URL mock cục bộ. Apidog khởi động một mock server và cung cấp cho bạn một URL cho mỗi endpoint. Gọi nó từ frontend, các bài kiểm thử của bạn, hoặc curl, chính xác như một dummy API công khai, ngoại trừ các phản hồi khớp với hợp đồng của bạn.
- Thêm các phản hồi có điều kiện và lỗi. Cấu hình một mock để trả về lỗi 500, 404, hoặc một phản hồi trễ dựa trên yêu cầu. Bây giờ bạn có thể kiểm thử các trường hợp không mong muốn mà các dịch vụ công khai không bao giờ cho phép bạn tái tạo.
Bởi vì mock được tạo ra từ spec của bạn, nó sẽ luôn đồng bộ khi thiết kế của bạn phát triển. Thay đổi một trường, và mock sẽ phản ánh điều đó. Nếu bạn muốn có cái nhìn rộng hơn về việc tạo mock trực tiếp từ một spec, hướng dẫn chi tiết về tạo dữ liệu mock từ các schema OpenAPI sẽ đi sâu hơn vào khía cạnh Faker.
Dummy API công khai so với mock API Apidog của riêng bạn
| Nhu cầu | Dummy API công khai | Mock API Apidog |
|---|---|---|
| Dữ liệu chỉ đọc nhanh chóng | Rất tốt | Rất tốt |
| Cấu trúc dữ liệu chính xác của bạn | Không | Có |
| Phản hồi lỗi và độ trễ tùy chỉnh | Không | Có |
| Khớp với hợp đồng OpenAPI của bạn | Không | Có |
| Thời gian thiết lập | Bằng 0 | Vài phút |
Không có loại nào tốt hơn hẳn. Một dummy API công khai sẽ vượt trội khi bạn chỉ cần bất kỳ JSON nào trong năm giây. Mock API Apidog của riêng bạn thắng thế khi sự chính xác đối với hợp đồng thực tế của bạn là quan trọng. Hầu hết các đội đều sử dụng cả hai: các API công khai cho các thử nghiệm dùng một lần, và mock dự án cho mọi thứ được triển khai.
Các câu hỏi thường gặp
Dummy API có giống như mock API không?
Chúng trùng lặp nhưng không hoàn toàn giống nhau. Một dummy API thường có nghĩa là một dịch vụ công khai, chia sẻ với dữ liệu mẫu cố định, như JSONPlaceholder. Một mock API là một API mà bạn tự định nghĩa và kiểm soát, trả về các cấu trúc và hành vi riêng của bạn. Một dummy API là một dạng mock mà người khác đã host. Nếu bạn muốn phân biệt rõ ràng, hãy xem phần giải thích về mock API là gì.
Các fake API miễn phí có an toàn để sử dụng với dữ liệu thật không?
Không. Đừng bao giờ gửi dữ liệu người dùng thật, bí mật, hoặc token đến một dummy API công khai. Hãy coi mọi thứ bạn POST đều được ghi lại và hiển thị. Chỉ sử dụng chúng với các giá trị kiểm thử dùng một lần. Khi bạn cần sự riêng tư hoặc tính bền vững, hãy tự host mock của riêng bạn.
Dummy API có lưu dữ liệu tôi gửi không?
Hầu như không bao giờ. JSONPlaceholder, DummyJSON và reqres.in đều chấp nhận các yêu cầu ghi và trả về kết quả kèm theo một ID được tạo, nhưng không có gì được lưu trữ bền vững. Làm mới và bản ghi "đã tạo" của bạn sẽ biến mất. Nếu bạn cần trạng thái được duy trì, bạn cần một mock có trạng thái hoặc một backend thực sự.
Tôi có thể xây dựng một fake API mà không cần viết mã không?
Có. Với Apidog, bạn định nghĩa cấu trúc endpoint và để tính năng mocking thông minh tạo dữ liệu, không cần mã máy chủ. Bạn cũng có thể nhập một tệp OpenAPI và có các endpoint mock hoạt động chỉ trong vài phút.
Tổng kết
Các dummy API công khai như JSONPlaceholder, DummyJSON và reqres.in là cách nhanh nhất để nhận JSON thực tế cho việc tạo prototype và học hỏi. Chúng không tốn phí và không cần thiết lập. Thời điểm bạn cần các cấu trúc dữ liệu riêng của mình, trạng thái thực, hoặc các phản hồi lỗi có kiểm soát, hãy xây dựng một fake API mà bạn thực sự sở hữu.
Apidog cho phép bạn làm chính xác điều đó: nhập spec của bạn, nhận dữ liệu mock dựa trên schema, và gọi các endpoint của riêng bạn trong vài phút. Tải Apidog và biến hợp đồng API tiếp theo của bạn thành một mock hoạt động trước khi có bất kỳ dòng mã backend nào. Hãy xem nó phù hợp với quy trình kiểm thử của bạn như thế nào tại Apidog.
