RESTful API là gì? 6 ràng buộc kiến trúc cơ bản của RESTful API

RESTful API từ lâu đã không còn là khái niệm xa lạ đối với các lập trình viên. Bài viết này sẽ trình bày một số nội dung tổng quát liên quan đến RESTful API.

RESTful API là gì?

Để hiểu rõ RESTful API là gì, ta cần làm rõ hai khái niệm thành phần của nó. Bao gồm:

  • API là viết tắt của Application Programing Interface (Giao diện lập trình ứng dụng). Thuật ngữ này dùng để chỉ phương thức kết nối từ ứng dụng đến các thư viện khác nhau.
  • REST là từ viết tắt của REpresentational State Transfer (Truyền trạng thái đại diện). Đây là một tiêu chuẩn dùng để xây dựng API, giúp API trở nên thân thiện hơn với người dùng. Khái niệm này được Roy Fielding giới thiệu lần đầu vào năm 2000 trong luận văn tiến sĩ nổi tiếng của ông.

Do đó, RESTful API (hay còn được gọi là REST API) là thuật ngữ dùng để chỉ những API được xây dựng theo cấu trúc REST. Mặc dù REST có thể được sử dụng với mọi giao thức, nhưng nó thường dùng HTTP cho Web API.

Những ràng buộc kiến trúc cơ bản của RESTful API

Thực tế cho thấy, có rất nhiều API tự nhận mình là RESTful, nhưng chúng lại không đáp ứng được những ràng buộc mà tiến sĩ Fielding đặt ra. Một RESTful API phải thỏa mãn những ràng buộc (hay điều kiện) sau đây:

1. Client–server (Máy khách – máy chủ)

Ràng buộc này hoạt động dựa trên ý tưởng rằng máy khách và máy chủ phải hoàn toàn tách biệt và được phép phát triển riêng lẻ, độc lập. Phương thức hoạt động chính của REST là tách biệt giao diện người dùng ra khỏi dữ liệu lưu trữ.

Máy khách và máy chủ là hai khái niệm quen thuộc của RESTful API (Nguồn: Unsplash.com).
Máy khách và máy chủ là hai khái niệm quen thuộc của RESTful API (Nguồn: Unsplash.com).

Với cách thức này, người dùng có thể thực hiện thay đổi với các ứng dụng di động của mình một cách độc lập. Việc này không làm ảnh hưởng đến cấu trúc dữ liệu hoặc thiết kế cơ sở dữ liệu của máy chủ. Ngược lại, việc điều chỉnh cơ sở dữ liệu hoặc thay đổi ứng dụng của máy chủ cũng không ảnh hưởng đến ứng dụng của máy khách.

2. Stateless (Phi trạng thái)

Bất kỳ một RESTful API nào cũng phải phi trạng thái. Nghĩa là mỗi yêu cầu (request) từ máy khách đến máy chủ có thể được thực hiện độc lập. Đồng thời, mỗi yêu cầu phải chứa mọi thông tin cần thiết để máy chủ hiểu và hoàn thành nó.

Ngoài ra, yêu cầu của máy khách không thể lạm dụng bất kỳ thông tin nào trên máy chủ. Đó cũng chính là lý do khiến trạng thái phiên (session state) được giữ hoàn toàn trên máy khách. Điều này sẽ giúp tăng độ tin cậy cho API, hạn chế lỗi và giảm tài nguyên sử dụng.

3. Cacheable (Lưu được vào bộ nhớ cache)

API phi trạng thái có thể tăng số lượng request, nhất là khi có nhiều cuộc gọi đến và đi. Do đó, RESTful API được thiết kế để lưu trữ dữ liệu vào cache để tăng tính tái sử dụng.

Cụ thể, ràng buộc này yêu cầu mỗi phản hồi phải đánh dấu dữ liệu bên trong nó là lưu được hoặc không lưu được vào cache. Nếu phản hồi lưu được vào cache, thì máy khách có thể sử dụng lại dữ liệu của phản hồi đó cho các yêu cầu tương tự sau này.

RESTful API được thiết kế để lưu trữ dữ liệu vào cache để tăng tính tái sử dụng (Nguồn: Unsplash.com).
RESTful API được thiết kế để lưu trữ dữ liệu vào cache để tăng tính tái sử dụng (Nguồn: Unsplash.com).

4. Uniform interface (Giao diện thống nhất)

REST áp dụng những nguyên tắc chung của kỹ thuật phần mềm cho giao diện thành phần. Chính vì lý do đó, tổng thể kiến trúc hệ thống được đơn giản hóa. Khả năng hiển thị của các tương tác cũng được cải thiện đáng kể.

Để có giao diện thống nhất, REST cần nhiều ràng buộc kiến trúc cho các thành phần bên trong. Chẳng hạn, việc biểu diễn tài nguyên trên toàn hệ thống phải tuân theo các nguyên tắc cụ thể. Các nguyên tắc đó bao gồm: quy ước đặt tên, định dạng liên kết, định dạng dữ liệu (XML hoặc JSON).

Ngoài ra, tất cả tài nguyên phải được truy cập thông qua một cách chung như HTTP GET. Việc điều chỉnh, sửa đổi tài nguyên cũng phải sử dụng một cách tiếp cận nhất quán.

5. Layered system (Hệ thống phân lớp)

Kiểu hệ thống phân lớp cho phép một kiến trúc chứa nhiều lớp phân cấp. Mỗi lớp sẽ có một chức năng và trách nhiệm cụ thể. Cách thức của REST là hạn chế hành vi của các thành phần trong một lớp. Mỗi thành phần hoàn toàn không thể thấy được những gì ở bên ngoài lớp mà chúng đang tương tác.

6. Code on demand (Mã theo yêu cầu)

Ràng buộc này là tùy chọn, không bắt buộc. Do đó, đây cũng là ràng buộc ít được biết đến của REST.

Mã theo yêu cầu là một ràng buộc tùy chọn, không bắt buộc của REST (Nguồn: Unsplash.com).
Mã theo yêu cầu là một ràng buộc tùy chọn, không bắt buộc của REST (Nguồn: Unsplash.com).

Ràng buộc này cho phép người dùng mở rộng chức năng của máy khách. Họ có thể tải xuống và thực thi mã dưới dạng các ứng dụng nhỏ (applet) hoặc tập lệnh. Điều này sẽ đơn giản hóa công việc cho máy khách, bằng cách giảm các tính năng bắt buộc triển khai từ trước.

Tóm lại, một RESTful API phải thỏa mãn 6 ràng buộc về thiết kế nêu trên. Trước khi sử dụng, bạn cần phải kiểm tra kỹ từng ràng buộc để xem API đó có phù hợp với dự án của mình hay không. Hy vọng bài viết này sẽ giúp bạn hiểu rõ hơn về RESTful API.


Got It Vietnam – Tham khảo: Restfulapi.net.

Nếu bạn quan tâm, hãy xem các vị trí đang tuyển dụng của Got It tại: bit.ly/gotit-hanoi và đọc thêm về quy trình tuyển dụng tại đây.

https://d1iv5z3ivlqga1.cloudfront.net/wp-content/uploads/2021/04/29235048/1_QAG9RXQyyMAY7i9OYo84FA.png
Got It Vietnam
February 07, 2021
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
Web API là gì? Web API hoạt động như thế nào?

Web API là gì? Web API hoạt động như thế nào?

Với những tính năng ưu việt, Web API ngày càng được ứng dụng rộng rãi trong xây dựng website. Vậy Web API là gì? Web API hoạt động như thế nào? Hãy cùng Got It khám phá những thông tin thú vị này trong bài viết dưới đây nhé! Mục lụcWeb API là gì?Web API […]
RESTful Web Service và những điều bạn cần biết về nó

RESTful Web Service và những điều bạn cần biết về nó

Bên cạnh SOAP, RESTful Web Service là một loại hình được sử dụng phổ biến hiện nay. Bài viết này sẽ giúp bạn hình dung rõ hơn về dịch vụ Web nổi tiếng này. Mục lụcTổng quan về RESTful Web ServiceRESTful Web Service là gì?Đặc điểmNguồn gốcNhững yếu tố chính của RESTful Web Service1. Tài […]
RESTful API Laravel và những ưu, nhược điểm của nó

RESTful API Laravel và những ưu, nhược điểm của nó

So với nhiều loại API khác, RESTful API Laravel có nhiều ưu điểm đáng ghi nhận. Bài viết này sẽ phân tích những ưu và nhược điểm của việc xây dựng RESTful API với Laravel. Mục lụcRESTful API Laravel là gì?Ưu điểm của việc tạo RESTful API bằng Laravel1. Dễ cấu hình và mở rộng2. […]
RESTful API là gì? 6 ràng buộc kiến trúc cơ bản của RESTful API

RESTful API là gì? 6 ràng buộc kiến trúc cơ bản của RESTful API

RESTful API từ lâu đã không còn là khái niệm xa lạ đối với các lập trình viên. Bài viết này sẽ trình bày một số nội dung tổng quát liên quan đến RESTful API. Mục lụcRESTful API là gì?Những ràng buộc kiến trúc cơ bản của RESTful API1. Client–server (Máy khách – máy chủ)2. […]
API là gì? Đặc điểm và ứng dụng của API trong thiết kế website

API là gì? Đặc điểm và ứng dụng của API trong thiết kế website

Hiện nay, API đang được ứng dụng ngày càng nhiều trong lĩnh vực công nghệ thông tin. Vậy API là gì? Tại sao đối với thiết kế ứng dụng di động và lập trình website, API được ví như cánh tay đắc lực không thể thiếu? Hãy cùng Got It tìm hiểu về API và […]
Tất tần tật về API: API là gì trong Java và 4 ưu điểm của Java API

Tất tần tật về API: API là gì trong Java và 4 ưu điểm của Java API

Chắc hẳn với những bạn mới tiếp xúc với ngôn ngữ lập trình Java đều có chung thắc mắc API là gì trong Java. Tầm quan trọng của API cũng như những ưu điểm của Java API trong Java platform sẽ được trình bày trong bài viết dưới đây. Mục lụcĐịnh nghĩa APIAPI là gì […]