Khái niệm, định nghĩa RESTful Web Service là gì?

RESTful Web Service là các Web Service được viết dựa trên kiến trúc REST. REST đã được sử dụng rộng rãi thay thế cho các Web Service dựa trên SOAP và WSDL. RESTful Web Service nhẹ (lightweigh), dễ dàng mở rộng và bảo trì.

THÔNG TIN CHÍNH

Điểm chú ý đầu tiên khi cài đặt RESTful web service là sử dụng một cách rõ ràng các phương thức HTTP theo cách mà chúng được định nghĩa bởi RFC 2616. Ví dụ phương thức GET được định nghĩa với mục đích để client sử dụng vào việc lấy dữ liệu từ server hoặc thực hiện một truy vấn để server tìm và trả về một tập các tài nguyên phù hợp. REST yêu cầu các nhà phát triển sử dụng một các rõ ràng các phương thức HTTP và nhất quán với cách mà chúng được định nghĩa. Quy tắc này của REST giúp thiết lập ánh xạ một một giữa các hành động tạo, đọc, cập nhật và xóa với các phương thức HTTP. Theo đó sẽ có:

  • Để tạo một tài nguyên trên server ta dùng phương thức POST.
  • Để lấy(đọc) tài nguyên trên server ta dùng phương thức GET.
  • Để update tài nguyên trên server ta dùng phương thức PUT.
  • Để xóa tài nguyển trên server ta dùng phương thức DELETE.

Ở đây phương thức GET được sử dụng để tạo một bản ghi mới trong cơ sở dữ liệu. Như vậy vi phạm định nghĩa của GET chỉ để lấy và trả về dữ liệu. Theo REST để tạo một tài nguyên mới ta sử dụng POST.

Việc sử dụng các phương thức HTTP một cách không rõ ràng ví dụ như sử dụng GET để tạo hoặc cập nhật tài nguyên, dữ liệu hệ thống sẽ gây ra vấn đề về mặt ngữ nghĩa. Web server được thiết kế để phản hồi lại các yêu cầu GET bằng việc lấy và trả về chúng bằng một dạng nào đó, chứ không phải để tạo hoặc cập nhật bản ghi trong cơ sở dữ liệu. Tương tự với các phương thức HTTP khác, theo REST chúng nên được sử dụng đúng với các chức năng nêu trên. Ngoài mặt ngữ nghĩa, còn có một vấn đề nữa có thể dẫn đến việc thay đổi dữ liệu phía server một cách không chủ tâm.

Phi trạng thái

Theo REST trạng thái hoặc được giữ trên client hoặc được chuyển thành trạng thái của tài nguyên. Nói một cách khác một server sẽ không bao giờ giữ trạng thái thông tin trao đổi với bất kỳ client nào nó giao tiếp, mỗi request lên server thì client phải đóng gói thông tin đầy đủ để thằng server hiểu được. Điều này giúp hệ thống của bạn dễ phát triển,bảo trì, mở rộng vì không cần tốn công CRUD trạng thái của client. Ngoài ra còn một nguyên nhân quan trọng hơn đó là nó tách biệt client khỏi sự thay đổi của server.

Cấu trúc thư mục như URI

URI trong RESTful web service phải tự mô tả, hoặc tham chiếu được cái mà nó trỏ tới và các tài nguyên liên quan. Ngoài ra URI cũng phải đơn giản, có thể đoán biết được, và dễ hiểu. Để tạo ra URI với yêu cầu trên thì ta nên định nghĩa URI có câu trúc giống thư mục. Loại URI này có phân cấp, có gốc là một đường dẫn đơn, các nhánh từ gốc là các đường dẫn phụ dẫn đến các các vùng service chính.

Với URI có cấu trúc như thư mục cho phép nhà phát triển dễ dàng trong việc cài đặt service của mình hướng vào một loại tài nguyên cụ thể nào đó.

Chuyển đổi XML, JSON hoặc cả hai

Điều cuối cùng trong tập các ràng buộc khi thiết kế RESTful web service phải làm là định dạng dữ liệu mà ứng dụng và service trao đổi trong phụ tải request/response hoặc trong HTTP body. Cung cấp nhiều đại diện biểu diễn cho tài nguyên cho các request khác nhau. Cụ thể ở đây ta có thể sử dụng các một vài kiểu MIME thông dụng sau:

  • JSON
  • XML
  • XHTML

Điều này cho phép các service sử dụng bởi các client viết bởi các ngôn ngữ khác nhau, chạy trên nhiều nền tảng và thiết bị khác nhau. Sử dụng các kiểu MIME cho phép client chọn dạng dữ liệu phù hợp với nó.

Kết luận

REST đã nổi lên trong vài năm qua như là một mô hình thiết kế dịch vụ chiếm ưu thế. Trong thực tế, REST đã có những ảnh hưởng lớn và gần như thay thế SOAP và WSDL vì nó đơn giản và dễ sử dụng hơn rất nhiều. Với REST hệ thống không chỉ dễ mở rộng, dễ bảo trì mà còn linh động trong việc cung cấp các kiểu ứng dụng với các dữ liệu khác nhau.