+1

Hiểu về REST API và các Best pratices (với triển khai CampusX)

REST API là gì?

REST API (Representational State Transfer API) là một phương thức giúp các hệ thống khác nhau giao tiếp với nhau thông qua HTTP, sử dụng các phương thức tiêu chuẩn như GET, POST, PUT, DELETE. Nó tuân theo các nguyên tắc giúp hệ thống mở rộng dễ dàng, không trạng thái và dễ dàng tích hợp.

Các đặc điểm chính của REST API

1. Không trạng thái (Stateless) – Mỗi yêu cầu từ phía client chứa toàn bộ thông tin cần thiết, và server không lưu trữ dữ liệu phiên. 2. Kiến trúc Client-Server – Client và server hoạt động độc lập, giúp tăng khả năng mở rộng. 3. Dựa trên tài nguyên (Resource-Based) – Dữ liệu được xem như các tài nguyên (ví dụ: /users, /posts). 4. Sử dụng các phương thức HTTP – Tuân theo các phương thức tiêu chuẩn:

  • GET – Truy xuất dữ liệu
  • POST – Tạo tài nguyên
  • PUT/PATCH – Cập nhật tài nguyên
  • DELETE – Xóa tài nguyên

5. JSON là định dạng phản hồi chính – Chủ yếu sử dụng JSON để trao đổi dữ liệu có cấu trúc. 6. Xác thực không trạng thái – Sử dụng token như JWT hoặc OAuth.

Các Best pratice khi thiết kế REST API

1. Sử dụng tên tài nguyên có ý nghĩa

Thay vì /getUserDetails?id=123, nên dùng /users/123.

2. Tuân thủ đúng các phương thức HTTP

  • GET /users → Lấy danh sách người dùng
  • POST /users → Tạo một người dùng mới
  • PUT /users/123 → Cập nhật người dùng có ID 123
  • DELETE /users/123 → Xóa người dùng có ID 123

3. Sử dụng mã trạng thái HTTP hợp lý

  • 200 OK → Thành công
  • 201 Created → Tạo tài nguyên thành công
  • 400 Bad Request → Dữ liệu đầu vào không hợp lệ
  • 401 Unauthorized → Cần xác thực
  • 404 Not Found → Không tìm thấy tài nguyên
  • 500 Internal Server Error → Lỗi hệ thống

4. Phân trang khi trả về dữ liệu lớn

Với tập dữ liệu lớn, hãy sử dụng phân trang: GET /posts?page=2&limit=10

5. Bảo mật API với xác thực

  • Sử dụng JWT (JSON Web Tokens) để xác thực.
  • Triển khai rate limiting để ngăn chặn lạm dụng.
  • Sử dụng HTTPS để mã hóa dữ liệu trao đổi.

6. Phiên bản hóa API

API có thể thay đổi theo thời gian, nên sử dụng phiên bản:

GET /v1/users
GET /v2/users

7. Xử lý lỗi một cách nhất quán

Một phản hồi lỗi chuẩn giúp dễ debug hơn. Ví dụ:

{
  "error": {
    "code": 400,
    "message": "Invalid input",
    "details": "Email field is required"
  }
}

Cách REST API được sử dụng trong CampusX

1. Xác thực người dùng (JWT)

CampusX sử dụng xác thực dựa trên JWT:

  • POST /register → Đăng ký người dùng mới với ảnh đại diện.
  • POST /login → Đăng nhập và nhận JWT token.
  • POST /logout → Đăng xuất.
  • POST /refresh-token → Làm mới token truy cập.
  • POST /change-password → Đổi mật khẩu.
  • GET /current-user → Lấy thông tin người dùng đã đăng nhập.

2. Quản lý bài viết

Người dùng có thể tạo và quản lý bài viết về kỳ thi VTU, cơ hội việc làm, câu lạc bộ trường đại học, v.v.:

  • POST / → Tạo bài viết mới (chỉ dành cho người dùng đã xác thực, hỗ trợ tải ảnh lên).
  • GET / → Lấy danh sách bài viết.
  • GET /:id → Lấy thông tin chi tiết của một bài viết.
  • DELETE /:id → Xóa bài viết (chỉ tác giả mới có quyền).

3. Bình luận và tương tác

Người dùng có thể bình luận và tương tác với bài viết:

  • POST /:postId/comments → Thêm bình luận.
  • GET /:postId/comments → Lấy danh sách bình luận.
  • DELETE /:postId/comments/:commentId → Xóa bình luận.

4. Quản lý tài khoản và hồ sơ người dùng

Người dùng có thể cập nhật thông tin cá nhân:

  • GET /channel/:user → Lấy hồ sơ người dùng.
  • PATCH /update-account → Cập nhật thông tin tài khoản.
  • PATCH /update-avatar → Cập nhật ảnh đại diện.
  • PATCH /update-coverimage → Cập nhật ảnh bìa.
  • DELETE /delete-account → Xóa tài khoản người dùng.

5. Hệ thống lưu bài viết và theo dõi người dùng

Người dùng có thể lưu bài viết và theo dõi người khác:

  • POST /:postId → Lưu bài viết vào danh sách yêu thích.
  • DELETE /:bookmarkId → Xóa bài viết khỏi danh sách yêu thích.
  • GET / → Lấy danh sách bài viết đã lưu.
  • POST /:userId/follow → Theo dõi một người dùng.
  • POST /:userId/unfollow → Bỏ theo dõi một người dùng.

Kết luận

REST API giúp vận hành nền tảng CampusX, tạo ra một môi trường thảo luận linh hoạt và có thể mở rộng dành riêng cho sinh viên. Bằng cách tuân thủ các thực tiễn tốt nhất của REST API, chúng tôi đảm bảo hệ thống sạch, dễ bảo trì và an toàn.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí