Cách tạo API REST ảo trong vài phút (với JSONPlaceholder)

Sử dụng json-server để biến một tệp JSON thành một REST API đầy đủ chỉ trong vài giây, gọi JSONPlaceholder mà không cần thiết lập nào, và tìm hiểu khi nào nên chuyển sang một mock nhận biết lược đồ.

INEZA Felin-Michel

INEZA Felin-Michel

17 tháng 6 2026

Cách tạo API REST ảo trong vài phút (với JSONPlaceholder)

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Bạn đang xây dựng giao diện người dùng (frontend), nhưng phần backend chưa sẵn sàng. Bạn cần một REST API trả về JSON thực tế ngay lập tức, với các hoạt động GET, POST, PUT, và DELETE đầy đủ, để bạn có thể tiếp tục viết mã thay vì phải chờ đợi.

Đó là lý do `json-server` ra đời. Chỉ cần trỏ nó vào một tệp JSON duy nhất và nó sẽ cung cấp một REST API đầy đủ trong vài giây, không yêu cầu mã backend nào. Người anh em của nó, JSONPlaceholder, còn tiến xa hơn một bước: một API giả lập được lưu trữ mà bạn có thể gọi mà không cần cài đặt bất cứ thứ gì. Hướng dẫn này sẽ chỉ cho bạn cách sử dụng cả hai, những giới hạn của chúng, và khi nào nên chuyển sang một mock API nhận biết lược đồ (schema-aware mock) trong Apidog.

Tải ứng dụng

Để có cái nhìn tổng quát hơn về việc giả lập các endpoint, hãy xem mock API là gì. Ở đây chúng ta sẽ tập trung vào hai công cụ mà các nhà phát triển thường tìm đến đầu tiên.

json-server là gì?

`json-server` là một công cụ npm mã nguồn mở biến một tệp JSON thuần túy thành một REST API thực sự. Bạn viết một tệp `db.json` mô tả tài nguyên của mình, chạy một lệnh, và bạn sẽ có các tuyến CRUD tiêu chuẩn được hỗ trợ bởi tệp đó. Các yêu cầu ghi (write requests) thực sự sửa đổi tệp, vì vậy dữ liệu sẽ tồn tại giữa các yêu cầu trong suốt phiên làm việc của bạn.

Đây là cách nhanh nhất để có được một API hoạt động cho việc tạo mẫu (prototyping), phát triển frontend, trình diễn (demos) và kiểm thử, mà không cần phải thiết lập cơ sở dữ liệu hay viết mã máy chủ. Dự án này có trên GitHub và được sử dụng rộng rãi cho chính công việc này.

Cài đặt và chạy json-server

Cài đặt từ npm:

npm install json-server

Tạo một tệp `db.json` trong dự án của bạn. Các khóa mảng cấp cao nhất sẽ trở thành các tuyến tài nguyên tập hợp (collection routes); các đối tượng cấp cao nhất sẽ trở thành các tuyến tài nguyên đơn lẻ (single-resource routes):

{
  "posts": [
    { "id": "1", "title": "First post", "views": 100 },
    { "id": "2", "title": "Second post", "views": 250 }
  ],
  "comments": [
    { "id": "1", "text": "Nice work", "postId": "1" }
  ],
  "profile": {
    "name": "apidog"
  }
}

Khởi động máy chủ:

npx json-server db.json

Theo mặc định, nó chạy tại `http://localhost:3000`. Vậy là xong; giờ bạn đã có một API hoạt động.

Lưu ý về phiên bản: json-server v1 đã loại bỏ cờ `--watch` cũ, vì vậy `npx json-server db.json` là lệnh hiện tại. Nếu bạn đang sử dụng phiên bản 0.x cũ hơn, bạn vẫn sẽ thấy `json-server --watch db.json` trong các hướng dẫn.

Các tuyến (routes) bạn nhận được miễn phí

Từ tệp `db.json` ở trên, json-server tạo ra một giao diện REST hoàn chỉnh.

Đối với mảng `posts`:

GET    /posts
GET    /posts/:id
POST   /posts
PUT    /posts/:id
PATCH  /posts/:id
DELETE /posts/:id

Đối với đối tượng `profile`:

GET   /profile
PUT   /profile
PATCH /profile

Chức năng truy vấn cũng được tích hợp sẵn. Cú pháp v1 sử dụng dấu hai chấm cho các điều kiện:

GET /posts?views:gt=100       # views lớn hơn 100
GET /posts?views:lte=50       # views nhỏ hơn hoặc bằng 50
GET /posts?_sort=-views       # sắp xếp theo views, giảm dần
GET /posts?_page=1&_per_page=25   # phân trang
GET /posts?_embed=comments    # bao gồm các bình luận liên quan

Các toán tử có sẵn bao gồm `lt`, `lte`, `gt`, `gte`, `eq`, `ne`, `in`, `contains`, `startsWith`, và `endsWith`. Đối với một tệp phẳng và một lệnh duy nhất, đó là một lượng lớn API.

JSONPlaceholder: một API giả lập không cần thiết lập

Đôi khi bạn thậm chí không muốn cài đặt một công cụ nào. JSONPlaceholder, từ cùng tác giả, là một REST API giả lập miễn phí được lưu trữ tại jsonplaceholder.typicode.com. Bạn gọi nó trực tiếp từ mã của mình:

curl https://jsonplaceholder.typicode.com/posts/1
{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident",
  "body": "quia et suscipit..."
}

Nó đi kèm với sáu tài nguyên có sẵn:

Nó cũng chấp nhận các yêu cầu POST, PUT, PATCH và DELETE, nhưng đây là điểm mấu chốt: các thao tác ghi (writes) chỉ là giả lập. API trả về một phản hồi thực tế như thể thay đổi đã xảy ra, nhưng không có gì được lưu. Làm mới trang và bài đăng "mới" của bạn sẽ biến mất. Điều này ổn cho việc kết nối mã UI với dữ liệu có thể dự đoán; nó không phải là một backend thực sự.

json-server so với JSONPlaceholder

json-server JSONPlaceholder
Thiết lập Cài đặt gói npm, viết db.json Không cần, chỉ cần gọi URL
Chạy trên Cục bộ, máy của bạn Được lưu trữ, công khai
Dữ liệu tùy chỉnh Có, tài nguyên của riêng bạn Không, tài nguyên cố định
Ghi dữ liệu có được lưu? Có, vào db.json Không, giả lập
Tốt nhất cho Tạo mẫu với cấu trúc dữ liệu của riêng bạn Thử nghiệm nhanh và học tập

Hãy sử dụng JSONPlaceholder khi bạn cần dữ liệu ngay lập tức và không quan tâm dữ liệu đó là gì. Hãy sử dụng json-server khi bạn cần tài nguyên của riêng mình và các thao tác ghi dữ liệu được lưu lại.

Những giới hạn của các công cụ này

`json-server` và JSONPlaceholder rất xuất sắc ở một việc: phục vụ JSON nhanh chóng. Chúng bắt đầu bộc lộ hạn chế khi một dự án phát triển vượt qua giai đoạn tạo mẫu một mình.

Nếu bạn đã vượt qua giới hạn của một tệp phẳng, các bài tổng hợp của chúng tôi về các công cụ giả lập endpoint RESTcác máy chủ mock API miễn phí và giá rẻ sẽ bao gồm cấp độ tiếp theo, và so sánh các công cụ mock API trực tuyến sẽ đặt các lựa chọn được lưu trữ cạnh nhau.

Khi nào nên chuyển sang máy chủ mock thực sự

Một mock nhận biết lược đồ (schema-aware mock) khắc phục mọi hạn chế trên. Đây là lúc Apidog tiếp quản từ json-server.

Giả lập cùng API trong Apidog

  1. Tải Apidog và tạo hoặc mở một dự án.
  2. Thêm một endpoint, ví dụ `GET /posts`, và định nghĩa lược đồ phản hồi của nó (hoặc nhập một tệp OpenAPI hiện có).
  3. Apidog tạo ra một URL mock và bắt đầu trả về dữ liệu thông minh, thực tế cho mọi trường ngay lập tức.
  4. Cần các giá trị cụ thể? Thêm một quy tắc mock cho mỗi trường để cố định đầu ra.
  5. Chia sẻ URL mock với nhóm của bạn hoặc đưa nó vào bộ kiểm thử và CI của bạn.

Bạn vẫn giữ được tốc độ "API trong vài phút" của json-server, đồng thời có được khả năng xác thực, dữ liệu động và một URL mà mọi người đều có thể truy cập.

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

json-server có miễn phí không? Có, nó là mã nguồn mở và miễn phí sử dụng. JSONPlaceholder cũng miễn phí.

json-server có lưu trữ dữ liệu không? Có. Các yêu cầu POST, PUT, PATCH và DELETE ghi lại vào tệp `db.json` của bạn, vì vậy các thay đổi sẽ tồn tại giữa các yêu cầu trong khi máy chủ đang chạy. JSONPlaceholder giả lập việc ghi và không lưu bất cứ thứ gì.

Tôi có thể sử dụng json-server trong môi trường production không? Không. Nó được xây dựng để tạo mẫu và kiểm thử. Nó không có xác thực thực tế, xác thực người dùng (auth) hoặc khả năng mở rộng.

Sự khác biệt giữa json-server và một máy chủ mock như Apidog là gì? json-server phục vụ một tệp tĩnh dưới dạng API. Apidog giả lập từ lược đồ API của bạn, trả về dữ liệu động thực tế và hiển thị một URL đám mây được chia sẻ. Xem mock API là gìtổng hợp các công cụ mock REST để biết thêm ngữ cảnh.

Làm thế nào để tôi có được dữ liệu giả lập thực tế thay vì các hàng tĩnh? Sử dụng một trình tạo. Một trình tạo dữ liệu kiểm thử tạo ra các bản ghi đa dạng, thực tế, và tính năng mock của Apidog thực hiện điều này tự động từ lược đồ của bạn.

Tóm tắt

`json-server` biến một tệp JSON thành một REST API hoạt động chỉ với một lệnh, và JSONPlaceholder cung cấp cho bạn một API giả lập được lưu trữ mà không cần bất kỳ thiết lập nào. Cả hai đều hoàn hảo để giúp bạn giải quyết các trở ngại một cách nhanh chóng. Một khi bạn cần xác thực lược đồ, dữ liệu động, trạng thái bền vững và một URL mà nhóm của bạn có thể thực sự truy cập, một tệp phẳng sẽ không đủ. Đó là lúc máy chủ mock của Apidog tiếp quản. Tải Apidog, nhập đặc tả của bạn, và mock của bạn sẽ khớp với hợp đồng thực tế ngay từ yêu cầu đầu tiên.

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API