Cơ bản về giao thức Restful API

  • Th10, T2, 2024
  • IOT
  • 0
  • 0 views
  • 10 minutes Read

RESTful API (Representational State Transfer) là một kiến trúc và phong cách thiết kế cho các dịch vụ web, cho phép các ứng dụng và hệ thống giao tiếp với nhau thông qua giao thức HTTP.

REST được Roy Fielding giới thiệu lần đầu vào năm 2000 và đã trở thành một trong những tiêu chuẩn phổ biến nhất để xây dựng các dịch vụ API vì sự đơn giản, dễ sử dụng, và khả năng mở rộng.

Phụ lục nội dung

Đặc điểm của RESTful API

  • Giao tiếp qua HTTP: RESTful API sử dụng các phương thức HTTP như GET, POST, PUT, DELETE để thực hiện các thao tác cơ bản với tài nguyên.
  • Không trạng thái (Stateless): Mỗi yêu cầu HTTP từ client tới server đều độc lập và không phụ thuộc vào các yêu cầu trước đó. Server không lưu trữ thông tin trạng thái của client giữa các lần yêu cầu, điều này giúp giảm tải cho server.
  • Đại diện tài nguyên (Representational): Tài nguyên (resource) trong RESTful API được đại diện qua các định dạng như JSON, XML, HTML, giúp client và server dễ dàng trao đổi thông tin với nhau.
  • Khả năng mở rộng: REST cho phép mở rộng hệ thống một cách dễ dàng khi thêm nhiều dịch vụ mới mà không ảnh hưởng đến các dịch vụ hiện có.
  • Có thể lưu trữ (Cacheable): Các phản hồi từ server có thể được lưu trữ để cải thiện hiệu suất và giảm tải cho server.

Các thành phần cơ bản của RESTful API

RESTful API xoay quanh khái niệm tài nguyên (resource), mỗi tài nguyên được xác định bởi một URI (Uniform Resource Identifier). Mỗi URI đại diện cho một đối tượng cụ thể trong hệ thống (ví dụ: user, product, order). Một số thành phần cơ bản bao gồm:

  • Tài nguyên (Resource): Là đối tượng hoặc dữ liệu mà API tương tác, ví dụ như “user”, “post”, “comment”.
  • URI (Uniform Resource Identifier): Địa chỉ duy nhất dùng để xác định tài nguyên, ví dụ: /api/users để truy cập danh sách người dùng.
  • Phương thức HTTP: Các phương thức như GET, POST, PUT, DELETE được sử dụng để thực hiện các thao tác khác nhau trên tài nguyên.
  • Định dạng dữ liệu: RESTful API thường trả dữ liệu về client dưới dạng JSON hoặc XML vì các định dạng này dễ dàng xử lý và phù hợp với nhiều ứng dụng.

Phương thức HTTP trong RESTful API

  • GET: Truy vấn và lấy thông tin của tài nguyên. Ví dụ: GET /api/users trả về danh sách người dùng.
  • POST: Tạo mới một tài nguyên. Ví dụ: POST /api/users thêm một người dùng mới vào hệ thống.
  • PUT: Cập nhật thông tin của một tài nguyên hiện có. Ví dụ: PUT /api/users/1 cập nhật thông tin của người dùng có ID là 1.
  • DELETE: Xóa một tài nguyên. Ví dụ: DELETE /api/users/1 xóa người dùng có ID là 1 khỏi hệ thống.
  • PATCH: Thường dùng để cập nhật một phần của tài nguyên. Ví dụ: PATCH /api/users/1 cập nhật một vài trường của người dùng có ID là 1.

Cấu trúc URL và URI trong RESTful API

Để thiết kế RESTful API thân thiện, các URI nên ngắn gọn, dễ hiểu và có cấu trúc rõ ràng. Một số quy tắc phổ biến khi thiết kế URL RESTful:

  • Dùng danh từ thay vì động từ: URI chỉ ra tài nguyên, vì vậy URI thường ở dạng danh từ. Ví dụ: /api/users thay vì /api/getUsers.
  • Dùng dạng số nhiều: Để cho biết tài nguyên đại diện cho một tập hợp, ví dụ: /api/products.
  • Lồng nhau: Nếu có tài nguyên phụ thuộc vào tài nguyên khác, dùng URI lồng nhau để chỉ rõ mối quan hệ. Ví dụ: /api/users/1/posts có nghĩa là lấy các bài viết của người dùng có ID là 1.
  • Sử dụng phiên bản API: Để đảm bảo khả năng mở rộng và nâng cấp mà không ảnh hưởng tới các phiên bản cũ, thêm phiên bản vào URI. Ví dụ: /api/v1/users.

Định dạng dữ liệu trong Restful API

RESTful API thường trả về dữ liệu ở các định dạng như:

  • JSON: Định dạng dữ liệu phổ biến nhất vì nó dễ đọc, nhẹ và được hỗ trợ rộng rãi.
  • XML: Cũng được sử dụng nhưng ít phổ biến hơn JSON do tính phức tạp và nặng hơn JSON.
Định dạng dữ liệu JSON

Trạng thái HTTP (HTTP Status Codes)

RESTful API sử dụng mã trạng thái HTTP để báo hiệu kết quả của một yêu cầu. Một số mã trạng thái thường dùng:

  • 200 OK: Yêu cầu đã được xử lý thành công.
  • 201 Created: Tài nguyên đã được tạo thành công (thường dùng cho POST).
  • 204 No Content: Yêu cầu thành công nhưng không có nội dung trả về (thường dùng cho DELETE).
  • 400 Bad Request: Yêu cầu không hợp lệ, thường do dữ liệu không đầy đủ hoặc không đúng định dạng.
  • 401 Unauthorized: Yêu cầu cần xác thực nhưng chưa được xác thực.
  • 403 Forbidden: Yêu cầu bị từ chối vì không có quyền truy cập.
  • 404 Not Found: Tài nguyên yêu cầu không tồn tại.
  • 500 Internal Server Error: Lỗi máy chủ, thường do lỗi từ phía server.

Ưu điểm của RESTful API

  • Dễ hiểu và dễ triển khai: Cấu trúc đơn giản, dễ học và triển khai.
  • Độc lập nền tảng: Có thể sử dụng với bất kỳ ngôn ngữ và nền tảng nào hỗ trợ HTTP.
  • Khả năng mở rộng: API RESTful dễ dàng mở rộng và tích hợp với các dịch vụ khác.
  • Hiệu suất tốt: Hoạt động hiệu quả trên mạng internet nhờ hỗ trợ bộ nhớ đệm (caching).

Nhược điểm của Restful API

  • Không phù hợp cho giao tiếp thời gian thực: RESTful API không hoạt động tốt trong các ứng dụng yêu cầu cập nhật liên tục hoặc thời gian thực (không hỗ trợ WebSocket).
  • Khó sử dụng với các giao dịch phức tạp: RESTful không thích hợp để thực hiện các giao dịch nhiều bước mà các bước phụ thuộc lẫn nhau.
  • Khó bảo mật với HTTP: Giao tiếp HTTP cần có các biện pháp bổ sung như SSL/TLS để đảm bảo an toàn dữ liệu.