RESTful: Phần 1 - Tìm hiểu RESTful API

RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng web để quản lý các resource.


8 min read
RESTful: Phần 1 - Tìm hiểu RESTful API

Các ứng dụng web hiện đại ngày nay ngày càng trở nên phức tạp và nhiều chức năng hơn, tuy nhiên chúng vẫn được cấu trúc xung quanh ý tưởng các tài nguyên (resources) và dựa trên mô hình client-server.

RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng web để quản lý các resource. RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến ngày nay để cho các ứng dụng (web, mobile, web service…) khác nhau giao tiếp với nhau.

Restful API

Ví dụ: Khi bạn sử dụng ứng dụng một ứng dụng thời tiết trên smartphone hay Ipad,... để cập nhật thông tin mới nhất, định kì (giả sử: 5 giây) nó sẽ gửi request đến máy chủ web service thông qua Internet. Khi máy chủ nhận được request, nó sẽ truy xuất, xử lý dữ liệu và trả kết quả về cho ứng dụng với một định dạng dữ liệu nào đó. Cuối cùng, ứng dụng sẽ xử lý những dữ liệu này và hiển thị cho người dùng.

Cấu trúc của RESTful API

Nguyên lí REST và cấu trúc dữ liệu RESTful được biết đến rộng rãi trong giới lập trình, những khái niệm này khá dễ nhầm lẫn và để hiểu được chúng cũng cần kha khá thời gian, sau đây chúng ta sẽ lần lượt tìm hiểu về các khái niệm: API, REST, RESTful.

API

Trong lập trình máy tính, Application Programming Interface (Giao diện lập trình ứng dụng) viết tắt là API, là một tập hợp các định nghĩa, giao thức và công cụ chương trình con để xây dựng phần mềm và ứng dụng.

Hiểu đơn giản thì API là một loại giao diện có một bộ các chức năng cho phép lập trình viên truy cập các tính năng hoặc dữ liệu cụ thể của một ứng dụng, hệ điều hành hoặc các dịch vụ khác.

API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML

Ví dụ: API của Facebook cho phép chúng ta lấy thông tin người dùng, đăng bài viết, sửa bài viết, lấy danh sách bạn bè,...

REST & RESTful

REST hay ReST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu được đề xuất bởi nhà khoa học máy tính Roy Thomas Fielding vào năm 2012.

REST là một kiểu kiến trúc được sử dụng trong việc giao tiếp giữa các máy tính (máy tính cá nhân và máy chủ của trang web) trong việc quản lý các tài nguyên trên internet.

REST được sử dụng rất nhiều trong việc phát triển các ứng dụng Web Services sử dụng giao thức HTTP trong giao tiếp thông qua mạng internet. Các ứng dụng sử dụng kiến trúc REST này thì sẽ được gọi là ứng dụng phát triển theo kiểu RESTful.

Trên thực tế chúng ta hay sử dụng thuật ngữ REST thay cho RESTful và ngược lại

Cách hoạt động của REST

REST gửi một request HTTP method như GET, POST, PUT, DELETE,... đến một URI để xử lý dữ liệu.

METHOD ACTION
POST (CREATE) Tạo mới một Resource.
GET (READ) Trả về một Resource hoặc một danh sách Resource.
PUT (UPDATE) Cập nhật, thay thế thông tin cho Resource.
DELETE (DELETE) Xoá một Resource.

Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa. Mỗi phương thức trên phải được API call thông qua để gửi chỉ thị cho server phải làm gì.

Ngoài ra còn một số HTTP Method khác, tham khảo thêm ở đây

Tóm lại, REST không phải là một công nghệ, Nó là một kiến trúc thống nhất giúp thiết kế các website để có thể dễ dàng quản lý các tài nguyên. Nó không phải là một quy luật buộc bạn phải tuân theo mà đơn giản là một kiến trúc được đề xuất ra và kiến trúc này hiện đang được sử dụng rất phổ biến vì tính đơn giản, dễ hiểu và rất ưu việt của nó.

Các ràng buộc của REST

Để được coi là một hế thống REST, hệ thống cần đảm bảo được 5 ràng buộc sau:

1. Kiến trúc client-server: Server sẽ là tập hợp các services nhỏ xử lý các request từ client, việc tách biệt giúp tăng tính linh hoạt của client cũng như khả năng mở rộng của server mà vẫn đảm bảo được giao tiếp.

2. Stateless (phi trạng thái): Server và client sẽ không lưu trạng thái của nhau, mỗi request và response sẽ chứa đầy đủ thông tin, tách biệt với nhau, điều này giúp hệ thống dễ phát triển và mở rộng.

3. Cacheability (có khả năng cache): Các response có thể được lấy ra từ cache của server giúp giảm thiểu thời gian xử lý, các request phải đảm bảo tính duy nhất để response không bị nhầm lẫn với các request khác.

4. Layered system (phân lớp hệ thống): Hệ thống được chia làm nhiều lớp, việc giao tiếp của 1 lớp chỉ được tiến hành với lớp ở trên và lớp ở dưới của nó, khả năng cân bằng tải (load balancing) và cache dữ liệu trong hệ thống cũng sẽ được cải thiện.

5. Uniform interface (chuẩn hoá các interface): Đây là ràng buộc quan trọng nhất của hệ thống REST.

Để đảm bảo ràng buộc này, hệ thống tập trung vào việc xử lý các tài nguyên (resource). Mỗi một resource sẽ được xác định (định danh) bằng một URI (Uniform Resource Identifier) riêng biệt.

Việc tạo ra quy ước chuẩn để giao tiếp giữa các thành phần trong hệ thống giúp tất cả các thiết bị REST đều có thể truy cập đến tài nguyên trên server, điều này lý giải vì sao rất nhiều API sử dụng REST.

Ưu điểm của REST

  • Hiệu năng: các thành phần đảm bảo được việc giao tiếp theo đúng một quy ước giúp hệ thống có thể vận hành tốt hơn.
  • Tính khả biến: với các hệ thống cần thay đổi các tài nguyên liên tục, sử dụng REST với việc tạo request đơn giản sẽ giúp mọi chuyển trở nên đơn giản hơn.
  • Tính mở rộng: các hệ thống REST có khả năng mở rộng rất cao nhờ sự tách biệt giữa các thành phần và các quy ước giao tiếp được quy định sẵn.
  • Tính linh hoạt: việc chuẩn hoá interface giúp hệ thống trở nên linh hoạt hơn, có thể sử dụng cho cho nhiều nền tảng khác nhau, mobile, web,...
  • Trong sáng: trong giao tiếp giữa các thành phần, các request trở nên rất rõ ràng, dễ hiểu.
  • Đơn giản: xây dựng rất đơn giản, ví dụ như việc khai báo resource trong rails đã giúp xây dựng các uri cho resource.
  • Tính tin cậy: khó để xảy ra lỗi trong giao tiếp giữa các thành phần gây sụp đổ hệ thống.

Nhược điểm của REST

  • Chỉ hoạt động trên các giao thức HTTP.
  • Việc bảo mật và xác thực có thể không đảm bảo bằng SOAP (stateless).

Điều gì gây khó khăn khi thiết kế REST ?

RESTful API rất khó thiết kế vì REST là kiểu kiến ​​trúc và không phải công nghệ. Nó không có tiêu chuẩn quản lý, do đó không có quy tắc thiết kế nhanh và bền vững.

Những gì REST có là một cách giải thích về cách thức hoạt động của giao thức HTTP, cho phép thực hiện nhiều cách tiếp cận khác nhau để thiết kế REST API.

Mặc dù việc sử dụng các phương thức HTTP là một lợi thế cốt lõi của nguyên lí REST, nhưng điều đó cũng có nghĩa là có rất nhiều thiết kế RESTful API khác nhau. Chúng ta sẽ tập trung vào một số chỉ dẫn tốt nhất trong việc thiết kế các REST APIs.

Trong phần sau chúng ta sẽ đi tìm hiểu một số nguyên tắc thiết kế một REST API

Tham khảo:

https://techblog.vn/rest-101-rest-restful-api
https://www.codehub.vn/RESTful-Web-Services-La-Gi
https://bkaii.com.vn/tin-tuc/334-khai-niem-co-ban-ve-restful-api
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
https://slideplayer.com/slide/10681447/
https://restfulapi.net/http-methods/
https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-design
https://github.com/microsoft/api-guidelines/blob/vNext/Guidelines.md
https://happycoding.io/tutorials/java-server/rest-api


GO TOP

🎉 You've successfully subscribed to itplusX!
OK
]