RESTful là một tiêu chuẩn dùng để thiết kế API cho các ứng dụng web, giúp quá trình quản lý resource trở nên thuận tiện hơn.
RESTful API là gì?
RESTful API hay còn được biết đến với tên gọi khác là REST API - một trong các tiêu chuẩn dùng để phát triển API cho web service.
Đây là giao diện lập trình ứng dụng thiết kế tuân thủ theo các ràng buộc của kiến trúc REST, cho phép chúng tương tác với dịch vụ web RESTful.
Khi một client request được tạo ra thông qua RESTful API, nó sẽ chuyển đổi trạng thái cấu trúc của tài nguyên sang các định dạng JSON, HTML, XLT, Python, PHP... đến người nhận hoặc endpoint.
Trong đó, JSON là định dạng phổ biến nhất vì cả con người và máy tính đều có thể đọc được nó.
Nhờ có RESTful API mà việc quản lý resource trở nên đơn giản hơn rất nhiều.
Hiện nay, RESTful API đang ngày càng được ứng dụng rộng rãi trong lĩnh vực lập trình web nói chung.
Tiêu chí của RESTful API
Một API được xem là RESTful API khi nó tuân thủ các tiêu chí sau đây:
- Code-on-demand.
- Là một kiến trúc client-server tạo ra bởi các client, server, tài nguyên.
- Có request được quản lý thông qua HTTP.
- Giao tiếp client-server không trạng thái (stateless).
- Dữ liệu được lưu trữ trong bộ nhớ đệm (cache), giúp việc giao tiếp giữa client và server trở nên hiệu quả hơn.
- Có giao diện thống nhất giữa những thành phần để thông tin truyền đi ở dạng chuẩn, tức tài nguyên chỉ nhận dạng thông qua một URL duy nhất và việc xử lý chúng phải được thực hiện với phương pháp cơ bản của giao thức mạng như POST, PUT, GET, DELETE.
RESTful API có các ưu và nhược điểm gì?
Ưu điểm
- Code trông đơn giản và gọn gàng.
- Không quy định về logic code.
- Bất kỳ một ngôn ngữ lập trình hoặc framework nào cũng có thể được ứng dụng để tạo ra RESTful API.
- Cho phép xây dựng nhiều ứng dụng phức tạp.
- Quản lý mức tải cao nhờ HTTP proxy server và cache.
- Cho phép sử dụng tài nguyên cùng với các lệnh gọi thủ tục HTTP tiêu chuẩn để truy xuất dữ liệu và request.
- Cho phép sử dụng các giao thức OAuth trong việc xác thực request REST.
Nhược điểm
Không có trạng thái
Hầu như các ứng dụng web đều yêu cầu cơ chế có trạng thái (stateful).
Ví dụ như khi người dùng sử dụng một website có giỏ hàng.
Điều này có nghĩa là họ luôn cần biết số lượng hàng hóa có trong giỏ trước khi thực hiện thanh toán.
Và việc duy trì trạng thái này là nhiệm vụ của phía client nên ứng dụng sẽ cồng kềnh và khó thực hiện bảo trì hơn.
Vấn đề bảo mật
RESTful API sẽ phù hợp với các URL public, nhưng lại không phải là một lựa chọn tốt nhất nếu cần truyền dữ liệu nhạy cảm giữa client và server.