✅ REST API hoạt động như thế nào?
✅ REST API hoạt động như thế nào?
Chức năng cơ bản của API RESTful cũng giống như việc duyệt Internet. Client liên hệ với máy chủ bằng cách sử dụng API khi yêu cầu tài nguyên. Đây là các bước chung cho bất kỳ lệnh gọi REST API:
Chi tiết về phản hồi và yêu cầu API REST sẽ khác nhau đôi chút tùy thuộc vào cách các nhà phát triển API thiết kế API.
Trước tiên chúng ta sẽ tìm hiểu một chút về HTTP Response. Khi nhận và phiên dịch một HTTP Request, Server sẽ gửi tín hiệu phản hồi là một HTTP Response bao gồm các thành phần sau:
Dưới đây là một số ví dụ về một HTTP Response🔆 Trên trình duyệt web
🔆 Trên PostmanBây giờ chúng ta sẽ tập trung chính vào dòng Status-Line: Một dòng Status Line bao gồm phiên bản giao thức (HTTP-Version) sau đó là mã hóa trạng thái số (Status-Code) và cụm từ thuần văn bản được liên kết của nó. Các thành phần được phân biệt bởi dấu cách:
🔆 Cấu trúc của Response trả về với Body dạng JSON như sau:🔆 Cấu trúc của Response trả về với Body dạng HTML/XML như sau:
Status code (Mã hóa trạng thái thường được gọi là mã trạng thái) là một số nguyên 3 ký tự, trong đó ký tự đầu tiên của Status-Code định nghĩa loại Response và hai ký tự cuối không có bất cứ vai trò phân loại nào. Có 5 loại giá trị của ký tự đầu tiên:
Tiêu đề yêu cầu là siêu dữ liệu được trao đổi giữa client và máy chủ. Ví dụ: tiêu đề yêu cầu cho biết định dạng của yêu cầu và phản hồi (), cung cấp thông tin về trạng thái yêu cầu, v.v.
Các yêu cầu API REST có thể bao gồm dữ liệu cho phương thức POST, PUT, PATCH và các phương thức HTTP khác để hoạt động thành công.Dữ liệu phổ biến là dạng JSON được truyền trong phần body.
Các yêu cầu API RESTful có thể bao gồm các tham số cung cấp cho máy chủ thêm chi tiết về những gì cần phải thực hiện. Sau đây là một số loại tham số khác nhau:
+ HeaderNgoài ra phần Header còn giúp client chỉ định được loại content cần trả về từ server – content type. Việc này được thực hiện thông qua phần Accept trong header. Giá trị của nó thường là MIME type:
Ví dụ request lấy danh sách bài viết:
Các API RESTful đòi hỏi các yêu cầu phải chứa những thành phần chính sau:
Hãy nhớ rằng REST API là stateless (không rõ ràng). Mỗi một request không hề biết bất kỳ thông tin gì trước đó. Khác với khi chúng ta truy cập web, trình duyệt sẽ có session và cookie để hỗ trợ phân biệt request đấy là của ai, thông tin trước đó là gì.Trong REST, nếu một request cần xác thực quyền truy cập, chúng sẽ phải thêm thông tin xác thực kèm theo. Ví dụ như thông tin Authorization sẽ mang theo một user token.Hiện có 3 cơ chế Authentication chính:
Ngoài ra còn các dạng khác như:
Máy chủ xác định từng tài nguyên bằng mã định danh tài nguyên duy nhất. Đối với các dịch vụ REST, máy chủ thường thực hiện việc xác định tài nguyên bằng cách sử dụng Hệ thống định vị tài nguyên thống nhất (URL).URL chỉ định đường dẫn đến tài nguyên. URL tương tự như địa chỉ trang web mà bạn nhập vào trình duyệt của mình để truy cập vào bất kỳ trang web nào. URL còn được gọi là điểm cuối (End Point) yêu cầu và chỉ định rõ cho máy chủ rằng client yêu cầu điều gì.
Các nhà phát triển thường triển khai các API RESTful bằng cách sử dụng Giao thức truyền siêu văn bản (HTTP). Phương thức HTTP cho máy chủ biết máy chủ cần làm gì với tài nguyên. Sau đây là 4 phương thức HTTP phổ biến:
Client sử dụng GET để truy cập các tài nguyên nằm tại URL được chỉ định trên máy chủ. Client có thể lưu vào bộ nhớ đệm các yêu cầu GET và gửi các tham số trong yêu cầu API RESTful để chỉ dẫn máy chủ lọc dữ liệu trước khi gửi. Hiểu nôm na là lấy ra dữ liệu theo điều kiện được chỉ định.
Client sử dụng POST để gửi dữ liệu đến máy chủ, hiểu nôm na là tạo dữ liệu mới. Client gửi kèm dạng biểu diễn dữ liệu với yêu cầu. Gửi cùng một yêu cầu POST nhiều lần có tác dụng phụ là tạo ra cùng một tài nguyên nhiều lần.
Client sử dụng PUT để cập nhật các tài nguyên hiện có trên máy chủ. Không giống như POST, gửi cùng một yêu cầu PUT nhiều lần trong một dịch vụ web RESTful sẽ cho cùng một kết quả.
Client sử dụng yêu cầu DELETE để xóa tài nguyên. Yêu cầu DELETE có thể thay đổi trạng thái máy chủ. Tuy nhiên, nếu người dùng không vượt qua quy trình xác thực thích hợp, yêu cầu sẽ không thành công.Ngoài ra còn có phương thức PATCH cũng gần giống như PUT, dùng để cập nhật một phần giá trị thay vì cập nhật đầy đủ các thông số.