TopGit
Đánh giá repo GitHub

JSON-Server: REST API Giả Lập Từ File JSON

typicode/json-server
JTopGit review image for typicode/json-server
Review by Topgit.dev for typicode/json-server, with GitHub repository stats and README context.
Nhận định nhanh

JSON-Server biến một file JSON thành REST API đầy đủ với các route GET, POST, PUT, PATCH, và DELETE, không cần viết code backend. Bạn thêm lọc, sắp xếp, phân trang, và nhúng quan hệ qua tham số truy vấn thay vì viết controller. Hãy dùng khi bạn cần một API giả lập để phát triển hoặc test trước khi backend thật tồn tại; bỏ qua nếu bạn cần xác thực, logic nghiệp vụ, hay lớp dữ liệu cho production.

Sao
★ 75.7k
Fork
⑂ 7.3k
Người đóng góp
👥 96
Ngôn ngữ
JavaScript
Giấy phép
MIT
Chủ đề
API
Cập nhật
Mar 2026
Trang chủ
—
GitHub

JSON-Server Là Gì?

JSON-Server là công cụ Node.js đọc một file db.json (hoặc db.json5) và phục vụ các khoá cấp cao nhất của nó như tài nguyên REST, nên một mảng posts trở thành các route GET/POST/PUT/PATCH/DELETE tại /posts. Chạy nó bằng npx json-server db.json sẽ khởi động server HTTP ở cổng 3000, dựa trên dữ liệu trong file đó. Tham số truy vấn xử lý lọc, sắp xếp, và phân trang mà không cần cấu hình thêm.

Tính Năng Chính Để Tạo API Giả Lập

  • ✓Đầy đủ route CRUD cho tài nguyên dạng mảng: GET, POST, PUT, PATCH, và DELETE trên /posts, được tạo trực tiếp từ cấu trúc file JSON.
  • ✓Lọc theo truy vấn với toán tử tường minh — field:operator=value — bao gồm eq, ne, lt, lte, gt, gte, in, contains, startsWith, và endsWith.
  • ✓Sắp xếp qua _sort, kể cả thứ tự giảm dần với dấu trừ ở đầu, và sắp xếp nhiều trường như _sort=author.name,-views.
  • ✓Phân trang qua _page và _per_page, mặc định 10 mục mỗi trang, trả về metadata first/prev/next/last/pages/items kèm theo data.
  • ✓Nhúng quan hệ với _embed, nên GET /posts?_embed=comments gắn kèm comment của mỗi post ngay trong response.
  • ✓Truy vấn boolean phức tạp qua _where, nhận một object JSON thô để lọc, và ghi đè các tham số truy vấn đơn giản khi có mặt.
  • ✓Tự động phục vụ file tĩnh từ ./public, và có thể thêm thư mục file tĩnh khác qua cờ -s.
  • ✓Xoá theo chuỗi phụ thuộc với _dependent, nên DELETE /posts/1?_dependent=comments sẽ xoá luôn comment của post đó.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao ↗

Khi Nào Nên Dùng JSON-Server

  • •Xây dựng frontend dựa trên endpoint REST thật trước khi đội backend triển khai xong bất cứ thứ gì.
  • •Viết integration test cần request/response HTTP thật thay vì mock fetch giả.
  • •Prototype nhanh một data model bằng cách chỉnh sửa trực tiếp db.json và thấy route cập nhật ngay.
  • •Demo ứng dụng với file tĩnh phục vụ song song dữ liệu API, nhờ hỗ trợ thư mục ./public sẵn có.

Bắt Đầu: Cài Đặt

Cài json-server như một dependency của dự án bằng `npm install json-server`. README không hướng dẫn cài đặt global; ví dụ sử dụng chạy thẳng qua npx (`npx json-server db.json`), hoạt động dù bạn có cài local hay không. Chạy `json-server --help` để xem đầy đủ tuỳ chọn CLI — README không liệt kê hết các cờ ngay trong văn bản, nên lệnh đó mới là tài liệu tham khảo thật cho các cờ như -s cho thư mục file tĩnh.

Tạo Và Truy Cập API Giả Lập

Tạo một file db.json với các mảng và object ở cấp cao nhất, ví dụ một mảng posts với trường id/title/views, cùng một mảng comments tham chiếu tới postId. Định dạng JSON5 cũng được hỗ trợ (db.json5), cho phép viết comment và dấu phẩy thừa trong file. Khởi động server bằng `npx json-server db.json`; nó lắng nghe tại http://localhost:3000 và log địa chỉ đó khi khởi động. Từ đó, `curl http://localhost:3000/posts/1` trả về post tương ứng dạng JSON, và mảng đó trở thành route CRUD đầy đủ tại /posts. Tham số truy vấn cộng thêm khả năng lọc, sắp xếp, phân trang, nhúng quan hệ, và lọc phức tạp qua _where.

Điểm mạnh

  • ✓CRUD đầy đủ được tạo tự động từ cấu trúc file JSON — không cần định nghĩa route, không ORM, không migration.
  • ✓Các toán tử truy vấn (eq, ne, lt, lte, gt, gte, in, contains, startsWith, endsWith) đủ đáp ứng phần lớn nhu cầu lọc của frontend khi phát triển.
  • ✓Phân trang trả về metadata thật (first/prev/next/last/pages/items), gần với response phân trang của một API production hơn là mock tự viết tay.
  • ✓Giấy phép MIT, nên không có rào cản bản quyền khi dùng trong bất kỳ dự án nào.
  • ✓Phục vụ file tĩnh từ ./public có sẵn, nên một bản demo có thể phục vụ các tệp HTML/CSS/JS song song với dữ liệu API trong cùng một process.

Phạm Vi Của JSON-Server

  • △Không có xác thực, phân quyền, hay validation. Ai chạm được tới server đều đọc và ghi được mọi tài nguyên.
  • △README hiện tại mô tả bản beta v1, mà chính dự án gắn nhãn là dùng được nhưng có thể phá vỡ tương thích; bản ổn định là v0.17.4 nằm ở nhánh riêng.
  • △Đây là công cụ cho phát triển và test, README không định vị nó cho traffic production.
  • △Việc migrate từ v0 lên v1 thay đổi hành vi thật: id giờ luôn là string và tự sinh, _limit được thay bằng _page/_per_page, _expand được thay bằng _embed, và cờ --delay bị bỏ để thay bằng throttling trong DevTools trình duyệt — nâng cấp không phải chuyện thay thế trực tiếp.
  • △Logic nghiệp vụ ngoài CRUD và truy vấn không được công cụ này cung cấp; bất cứ thứ gì tuỳ biến đều cần tự viết middleware hoặc chuyển sang backend khác.

Lựa Chọn Thay Thế Cho JSON-Server

Mockoon — ứng dụng desktop để dựng mock API bằng giao diện đồ hoạ thay vì file JSON và CLI, phù hợp nếu bạn thích click qua các route hơn là chỉnh tay db.json.MSW (Mock Service Worker) — chặn request ở tầng network ngay trong trình duyệt hoặc Node, phù hợp khi bạn muốn mock ngay trong test suite thay vì chạy một server riêng.Postman Mock Servers — mock dựa trên các request đã lưu trong collection của Postman, phù hợp nếu team bạn đã tài liệu hoá API bằng Postman.WireMock — mock server chạy trên JVM, dùng để stub HTTP service cho test backend và integration, phù hợp ngoài các stack thiên về JavaScript.

Câu Hỏi Thường Gặp

JSON-Server có phù hợp cho môi trường production không?

JSON-Server được xây dựng và tài liệu hoá như một công cụ cho phát triển và test, không phải lớp dữ liệu production. Nó không có lớp xác thực hay validation riêng, nên hãy dùng nó ở local hoặc CI thay vì phục vụ người dùng thật.

JSON-Server dùng giấy phép nào?

JSON-Server được phát hành theo giấy phép MIT, theo thông tin trên repository GitHub.

Làm sao để định nghĩa dữ liệu API với JSON-Server?

Bạn định nghĩa dữ liệu API bằng cách viết file db.json (hoặc db.json5) với các khoá cấp cao nhất là tài nguyên: một mảng như posts trở thành route CRUD đầy đủ, còn một object thường như profile trở thành tài nguyên dạng object đơn với GET/PUT/PATCH.

JSON-Server có xử lý được tham số truy vấn phức tạp không?

JSON-Server hỗ trợ tham số _where ngoài các filter field:operator đơn giản. Nó nhận một object JSON thô cho logic boolean như điều kiện OR trên nhiều trường, và ghi đè các tham số truy vấn đơn giản khi có mặt.

JSON-Server có hỗ trợ phục vụ file tĩnh không?

JSON-Server tự động phục vụ file từ thư mục ./public, và cờ -s cho phép thêm các thư mục file tĩnh khác như ./static hay ./node_modules.

Khác biệt chính giữa JSON-Server v0 và v1 là gì?

Bản migrate lên v1 khiến id luôn là string và tự sinh, thay tham số _limit đã deprecated bằng _page/_per_page, thay _expand bằng _embed cho quan hệ, và bỏ cờ CLI --delay để dùng throttling network trong DevTools trình duyệt.

Vấn đề JSON-Server giải quyết

Công việc frontend thường bị đình trệ cho tới khi có backend thật, hoặc team tự viết mock fetch tạm bợ rồi lệch dần khỏi hành vi HTTP thật: sai status code, phân trang không thật, chuỗi truy vấn không được phân tích đúng. JSON-Server biến một file JSON thành các route phản hồi như một REST API thật, gồm CRUD với status phù hợp, lọc theo toán tử, và metadata phân trang, để code frontend và test có thể gọi thẳng vào endpoint HTTP thật trước khi đội backend triển khai xong.

Ai nên dùng — và ai nên bỏ qua

Hãy dùng JSON-Server nếu bạn đang xây frontend hoặc viết test và muốn có request HTTP thật tới các route CRUD mà không cần dựng database và backend framework. Nó phù hợp với team cần hành vi lọc, sắp xếp, và phân trang trông chân thực trong lúc phát triển. Bỏ qua nếu bạn cần xác thực, phân quyền, hay quy tắc nghiệp vụ được thực thi ở phía server — đó là điều một mock server dựa trên file JSON không hướng tới, và bạn sẽ phải gắn thêm middleware hoặc chuyển sang backend thật.

Repo liên quan

Nguồn & ghi công

Thông tin và trích dẫn lấy từ repository GitHub typicode/json-server và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 14 thg 8, 2026Đánh giá bởi Henry
← Về TopGit

Chưa chắc json-server có hợp với bạn?

Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về json-server.

GitHub