DEV Community

Cover image for Cách Mock API trong Apidog không cần viết code
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

Cách Mock API trong Apidog không cần viết code

Nhóm frontend của bạn đang bị tắc nghẽn: backend cho GET /usersGET /orders chưa sẵn sàng, nhưng giao diện vẫn cần dữ liệu để hiển thị danh sách, phân trang và xử lý trạng thái trống. Cách làm cũ là tự tạo tệp JSON giả, rồi liên tục sửa khi trường API thay đổi — một quy trình dễ lệch khỏi API thực tế.

Dùng thử Apidog ngay hôm nay

Có một cách nhanh hơn. Nếu đã có đặc tả API, Apidog có thể tạo mock trực tiếp từ schema endpoint, không cần cấu hình hoặc viết mã. Tính năng này là Smart Mock: nó đọc tên và kiểu trường để tạo dữ liệu hợp lý. Ví dụ, trường name có thể trả về tên, còn email có thể trả về địa chỉ email.

Bài viết này hướng dẫn mock hai endpoint thương mại điện tử từ đầu đến cuối: lấy URL mock, hiểu thứ tự ưu tiên phản hồi và điều chỉnh khi Smart Mock không tạo dữ liệu như mong muốn. Nếu cần nắm khái niệm trước, hãy xem mock API là gì và hoạt động như thế nào và tài liệu JSON Schema.

Smart Mock làm gì và vì sao giúp tiết kiệm thời gian?

Theo tài liệu, công cụ mock của Apidog hỗ trợ:

  1. Smart Mock: tự tạo dữ liệu từ đặc tả API.
  2. Response Example: trả về ví dụ phản hồi đã định nghĩa.
  3. Custom Mock: trả về phản hồi tùy chỉnh.
  4. Conditional Mock: trả về phản hồi dựa trên tham số request.
  5. Mock Script: tạo phản hồi có giá trị liên quan đến request.

Các phương thức mock trong Apidog

Smart Mock là lựa chọn không cần cấu hình trong bộ tính năng này. Bạn chỉ cần có endpoint với schema phản hồi. Apidog sẽ đọc schema và điền dữ liệu phù hợp cho các trường.

Điều này đặc biệt hữu ích khi frontend cần làm việc trước backend:

  • Không cần tự duy trì file JSON mock.
  • Mock thay đổi cùng schema.
  • Endpoint thiếu ví dụ phản hồi vẫn có dữ liệu để frontend sử dụng.
  • Dễ kiểm tra UI với dữ liệu thay đổi qua mỗi lần gọi.

Trước khi bắt đầu: yêu cầu duy nhất

Smart Mock cần endpoint có response schema.

Nếu thiết kế API trong Apidog, hãy thêm schema vào phần response của endpoint. Nếu import tệp OpenAPI, response schema thường đã có sẵn.

Không có response schema, Smart Mock không có cấu trúc để sinh dữ liệu hữu ích.

Nếu dùng Local Mock, bạn cần ứng dụng Apidog desktop vì Local Mock không có trên Apidog Web. Tải Apidog để làm theo.

Từng bước mock GET /usersGET /orders

Hãy tạo mock cho một API cửa hàng đơn giản gồm hai endpoint:

  • GET /users
  • GET /orders

Bước 1: Định nghĩa endpoint và response schema

Tạo endpoint GET /users với response body như sau:

{
  "id": 1024,
  "name": "Amara Osei",
  "email": "amara.osei@example.com",
  "phone": "+1-415-555-0148",
  "createdAt": "2026-03-11T09:24:00Z",
  "isActive": true
}
Enter fullscreen mode Exit fullscreen mode

Tiếp theo, tạo GET /orders trả về danh sách đơn hàng:

[
  {
    "orderId": "ORD-58210",
    "userId": 1024,
    "total": 84.5,
    "currency": "USD",
    "status": "shipped",
    "createdAt": "2026-05-02T14:03:00Z"
  }
]
Enter fullscreen mode Exit fullscreen mode

Đảm bảo mọi thuộc tính đều có kiểu dữ liệu trong schema. Smart Mock sử dụng cả tên trườngkiểu dữ liệu để chọn giá trị phù hợp.

Bước 2: Sao chép URL mock

Mỗi endpoint sẽ tự động có URL mock. Vị trí URL tùy thuộc vào chế độ bạn dùng:

  • Trong DESIGN, URL mock nằm ở tab API bên dưới endpoint.
  • Trong DEBUG, URL mock nằm ở tab Mock.

Nhấp “Nhấp để sao chép” để lấy URL.

Lưu ý: thao tác này chỉ sao chép URL. Nếu endpoint không phải GET, hoặc cần request body, bạn phải tự thêm HTTP method và body khi gọi request.

Ví dụ Local Mock theo chế độ đường dẫn:

http://127.0.0.1:4523/m1/{projectID}-{versionNo}-{serverNo}/users
Enter fullscreen mode Exit fullscreen mode

Local Mock tự khởi động khi ứng dụng Apidog đang mở.

Ngoài ra còn có chế độ ID, dùng endpoint ID để định tuyến chính xác:

http://127.0.0.1:4523/m2/{projectID}-{versionNo}-{serverNo}/{endpointId}
Enter fullscreen mode Exit fullscreen mode

Bước 3: Gọi mock bằng curl

Gọi endpoint users:

curl http://127.0.0.1:4523/m1/1234567-0-0/users
Enter fullscreen mode Exit fullscreen mode

Kết quả có thể tương tự:

{
  "id": 3187,
  "name": "Diego Marchetti",
  "email": "diego.marchetti@example.net",
  "phone": "+1-628-555-0113",
  "createdAt": "2026-01-27T18:41:22Z",
  "isActive": true
}
Enter fullscreen mode Exit fullscreen mode

Các giá trị như name, emailcreatedAt được tạo dựa trên tên thuộc tính, không đơn thuần là chuỗi ngẫu nhiên.

Gọi endpoint orders tương tự:

curl http://127.0.0.1:4523/m1/1234567-0-0/orders
Enter fullscreen mode Exit fullscreen mode

Bạn sẽ nhận được mảng đơn hàng với các trường như tổng tiền, trạng thái và thời gian tạo — đủ để triển khai màn hình danh sách đơn hàng ngay cả khi backend chưa hoàn thiện.

Smart Mock quyết định giá trị như thế nào?

Smart Mock áp dụng ba mức ưu tiên khi tạo dữ liệu cho từng thuộc tính.

  1. Mock Field

Nếu bạn cấu hình giá trị hoặc biểu thức mock trực tiếp trên thuộc tính, thiết lập này có ưu tiên cao nhất.

Có hai lựa chọn:

  • Fixed value: luôn trả về một giá trị cố định.
  • Faker statement: tạo dữ liệu động theo biểu thức Faker.

Ví dụ: đặt currency là giá trị cố định USD, hoặc để status tạo ngẫu nhiên giữa shipped, pendingdelivered.

  1. Property Name Matching

Nếu không có Mock Field, Smart Mock sẽ thử khớp tên thuộc tính với các quy tắc tích hợp sẵn hoặc quy tắc bạn tự thêm.

Đây là lý do email có thể tạo email hợp lý, còn createdAt có thể tạo timestamp phù hợp.

  1. JSON Schema

Nếu tên trường không khớp quy tắc nào, Smart Mock sẽ tạo giá trị mặc định theo kiểu dữ liệu và các ràng buộc trong JSON Schema.

Thứ tự tạo dữ liệu Smart Mock

Smart Mock tôn trọng các ràng buộc JSON Schema, bao gồm:

  • enum
  • minimummaximum
  • minLengthmaxLength
  • pattern
  • minItems
  • Kiểu dữ liệu của thuộc tính

Ví dụ, nếu status là enum:

{
  "type": "string",
  "enum": ["pending", "shipped", "delivered"]
}
Enter fullscreen mode Exit fullscreen mode

Smart Mock chỉ trả về một trong ba giá trị này.

Nếu mảng có minItems: 3, phản hồi sẽ chứa ít nhất ba phần tử.

Apidog cũng hỗ trợ locale cho mock. Bạn có thể đổi locale để tạo dữ liệu phù hợp với thị trường, chẳng hạn tên và địa chỉ theo định dạng Nhật Bản.

Khi Smart Mock đoán sai: cách điều chỉnh

Smart Mock dựa trên suy luận nên đôi khi không tạo ra dữ liệu đúng ý. Ví dụ:

  • sku không khớp quy tắc tích hợp sẵn và chỉ trả về chuỗi chung.
  • total trả về số nguyên trong khi UI cần số thập phân.
  • status trả về giá trị không nằm trong nghiệp vụ thực tế.

Dưới đây là các cách xử lý, từ đơn giản đến kiểm soát cao hơn.

1. Thắt chặt JSON Schema

Đây thường là cách nên làm đầu tiên.

Ví dụ schema cho một đơn hàng:

{
  "type": "object",
  "properties": {
    "sku": {
      "type": "string",
      "pattern": "^SKU-[A-Z0-9]{6}$"
    },
    "total": {
      "type": "number",
      "minimum": 0,
      "maximum": 10000
    },
    "status": {
      "type": "string",
      "enum": ["pending", "shipped", "delivered"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Khi schema cụ thể hơn, dữ liệu Smart Mock cũng nằm trong phạm vi mong muốn hơn.

2. Thiết lập Mock Field

Dùng Mock Field khi schema không diễn tả đầy đủ dữ liệu bạn muốn.

Ví dụ:

  • Đặt currency là Fixed value: USD.
  • Dùng Faker statement cho status nếu cần dữ liệu thay đổi theo các giá trị hợp lệ.

Faker của Apidog dựa trên các ý tưởng tương tự Mock.js. Xem thêm hướng dẫn sử dụng Faker trong Apidog.

3. Thêm quy tắc Property Name Matching

Nếu cùng một trường xuất hiện ở nhiều endpoint, hãy tạo quy tắc dùng chung.

Ví dụ, để tất cả trường sku trong dự án tuân theo một định dạng:

  1. Vào Settings.
  2. Chọn General Settings.
  3. Chọn Feature Settings.
  4. Mở Mock Settings.
  5. Nhấp New.
  6. Tạo điều kiện khớp với tên sku.
  7. Cấu hình biểu thức mock tương ứng.

Từ đó, mọi trường sku sẽ dùng quy tắc này thay vì trả về chuỗi mặc định.

Thứ tự ưu tiên mock: phản hồi nào được trả về?

Khi một endpoint có nhiều nguồn phản hồi, Apidog sử dụng thiết lập Default mock method trong:

Project Settings → Mock Settings

Có hai chế độ:

  • Smart Mock First mặc định theo thứ tự:
  Mock Expectation → Smart Mock
Enter fullscreen mode Exit fullscreen mode
  • Response example first theo thứ tự:
  Mock Expectation → Response Example → Smart Mock
Enter fullscreen mode Exit fullscreen mode

Mock Expectation luôn có ưu tiên cao nhất nếu điều kiện khớp.

Ví dụ, bạn cấu hình expectation trả về 404 khi userId=9999. Khi request có điều kiện đó, Apidog sẽ trả về phản hồi expectation, bất kể bạn đang dùng Smart Mock First hay Response Example First.

Để tìm hiểu thêm về phản hồi dựa trên tham số, xem hướng dẫn mock các phản hồi API có điều kiện trong Apidog.

Tóm lại:

Mock Expectation
  > Response Example hoặc Smart Mock
  > Smart Mock làm fallback
Enter fullscreen mode Exit fullscreen mode

Local Mock, Cloud Mock và Runner Mock

Smart Mock và Custom Mock mô tả cách dữ liệu được tạo. Còn Local, Cloud và Runner Mock mô tả nơi mock chạy.

Local Mock

Local Mock chạy trên máy tính của bạn thông qua ứng dụng Apidog.

  • Tự khởi động khi ứng dụng mở.
  • Lắng nghe tại 127.0.0.1:4523.
  • Không có trên Apidog Web.
  • Phù hợp cho công việc frontend cá nhân.

Cloud Mock

Cloud Mock được lưu trữ trên máy chủ Apidog.

  • Có thể truy cập 24/7.
  • Tắt theo mặc định.
  • Cần bật trong phần quản lý môi trường.
  • Dùng URL bắt đầu bằng https://mock.apidog.com.
  • Phù hợp khi đồng đội hoặc bản preview đã deploy cần truy cập mock.

Cloud Mock dùng cho kiểm thử, không dành cho lưu lượng production.

Runner Mock

Runner Mock được tự lưu trữ trên hạ tầng của đội ngũ.

  • Phù hợp khi mock cần nằm trong mạng nội bộ.
  • Có thể chia sẻ trong nhóm.
  • Hữu ích với môi trường riêng hoặc yêu cầu hạ tầng tự quản lý.

Chọn nhanh:

Nhu cầu Lựa chọn
Phát triển frontend trên máy cá nhân Local Mock
Chia sẻ mock cho đồng đội hoặc preview Cloud Mock
Lưu trữ mock trong hạ tầng nội bộ Runner Mock

Tham khảo thêm so sánh các công cụ mock API trực tuyếnhướng dẫn Apidog Cloud Mock.

Lưu ý về định tuyến mock

Có một số quy tắc định tuyến cần nhớ.

Endpoint path phải bắt đầu bằng /

Đường dẫn đúng:

/orders
Enter fullscreen mode Exit fullscreen mode

Một URL đầy đủ không bắt đầu bằng / sẽ không sử dụng mock environment. Đường dẫn không có dấu / đầu chỉ hoạt động ở chế độ ID.

Hai API trùng method và path

Nếu hai API có cùng HTTP method và path, chế độ path không thể tự xác định endpoint.

Thêm query parameter sau để chỉ định endpoint:

?apidogApiId={endpointId}
Enter fullscreen mode Exit fullscreen mode

Dữ liệu thay đổi khi gửi request mới

Mỗi lần gọi lại request, Smart Mock có thể sinh dữ liệu động mới.

Nếu nhận được cùng phản hồi nhiều lần, hãy kiểm tra xem client hoặc trình duyệt có đang dùng dữ liệu cache hay không.

Tự động hóa quy trình với Apidog CLI

Mocking là khả năng GUI và cloud trong Apidog. Apidog CLI không khởi động mock server từ terminal.

Vai trò của CLI là giữ schema API — nguồn dữ liệu của Smart Mock — luôn chính xác khi dự án phát triển.

Vì Smart Mock sinh dữ liệu từ endpoint schema, mock chỉ chính xác khi đặc tả chính xác. Apidog CLI và các coding agent như Cursor, Claude Code, Trae và Codex có thể hỗ trợ tạo hoặc cập nhật endpoint và schema trong dự án.

Sau khi mock giúp frontend tiếp tục phát triển, bạn có thể chạy scenario kiểm thử trong CI để kiểm tra backend thực tế theo cùng API contract:

apidog run -t <scenario_id> -e <env_id> -r html,cli
Enter fullscreen mode Exit fullscreen mode

Cài CLI:

npm install -g apidog-cli
Enter fullscreen mode Exit fullscreen mode

Yêu cầu Node.js v16 trở lên.

Đăng nhập bằng token:

apidog login --with-token <your-token>
Enter fullscreen mode Exit fullscreen mode

Sau đó tích hợp lệnh chạy scenario vào pipeline CI/CD. Xem hướng dẫn chạy Apidog trong pipeline CI/CD.

Câu hỏi thường gặp

Có cần viết mã để dùng Smart Mock không?

Không. Chỉ cần endpoint có response schema, Smart Mock sẽ tự tạo dữ liệu.

Bạn chỉ cần dùng Faker statement, Mock Field hoặc mock script khi muốn ghi đè dữ liệu của một trường cụ thể. Xem thêm tổng quan về mock API.

Vì sao URL mock không trả về gì?

Các nguyên nhân phổ biến:

  • Endpoint chưa có response schema.
  • Path không bắt đầu bằng /.
  • Ứng dụng Apidog chưa mở khi dùng Local Mock.
  • URL hoặc endpoint ID không đúng.

Làm sao để trả về giá trị cụ thể thay vì dữ liệu ngẫu nhiên?

Thiết lập Mock Field cho thuộc tính đó.

  • Dùng Fixed value nếu giá trị luôn cố định.
  • Dùng Faker statement nếu cần dữ liệu đa dạng nhưng có kiểm soát.

Mock Field có ưu tiên cao hơn Property Name Matching và JSON Schema mặc định.

Đồng đội có thể gọi Local Mock trên máy tôi không?

Chỉ khi họ truy cập được qua mạng cục bộ và ứng dụng Apidog đang mở.

Nếu cần mock luôn sẵn sàng, hãy bật Cloud Mock và sử dụng URL https://mock.apidog.com.

Nếu có cả Response Example và Smart Mock, phản hồi nào được dùng?

Điều này phụ thuộc vào Default mock method:

  • Với Smart Mock First, Smart Mock được dùng sau khi không có Mock Expectation khớp.
  • Với Response example first, Response Example được dùng trước Smart Mock.
  • Mock Expectation luôn ghi đè cả hai nếu điều kiện khớp.

Tóm tắt

Smart Mock biến API schema thành mock hoạt động mà không cần viết mã hay duy trì JSON giả thủ công.

Quy trình triển khai:

  1. Thêm response schema cho endpoint.
  2. Sao chép URL mock từ tab API hoặc Mock.
  3. Gọi mock từ frontend hoặc curl.
  4. Thắt chặt JSON Schema nếu dữ liệu chưa phù hợp.
  5. Dùng Mock Field hoặc Property Name Matching khi cần kiểm soát nhiều hơn.
  6. Dùng Mock Expectations cho phản hồi có điều kiện.

Khi backend chưa sẵn sàng, Smart Mock giúp frontend tiếp tục triển khai dựa trên cùng API contract thay vì chờ đợi hoặc duy trì mock thủ công.

Top comments (0)