REST thường hoạt động chủ yếu dựa vào những giao thức HTTP, các cơ sở hoạt động cơ bản nêu trên sẽ được sử dụng những phương thức HTTP. REST API chia nhỏ một transaction ra thành nhiều module nhỏ khác nhau. Mỗi một module sẽ giải quyết một phần công việc trong transaction đó. Việc chia nhỏ thành các module này giúp các nhà phát triển có thể linh hoạt xử lý hơn. Tuy nhiên, việc chia nhỏ này cũng tạo ra không ít thách thức trong quá trình thiết kế REST API từ đầu đều không đảm bảo bằng SOAP (stateless).
GET (SELECT): Trả về một Resource hoặc một danh sách Resource.
POST (CREATE): Tạo mới một Resource.
PUT (UPDATE): Cập nhật thông tin cho Resource.
DELETE (DELETE): Xóa một Resource.
HTTP response status codes: HTTP response status codes cho biết một yêu cầu HTTP cụ thể đã được hoàn tất thành công hay chưa. Các câu trả lời được nhóm thành năm lớp:
## 6 nguyên tắc ràng buộc của kiến trúc RESTful
Rest Request gồm 4 thành phần chính:
Rest Response - Server gửi đại diện dữ liệu thường được viết ở dạng XML, JSON, …
Rest Headers: Tiêu đề HTTP là một phần quan trọng của yêu cầu và phản hồi API vì chúng đại diện cho siêu dữ liệu được liên kết với yêu cầu và phản hồi API
Có tính nhất quán xuyên suốt các API. Tồn tại mà không lưu trạng thái (Stateless existence), Sử dụng HTTP status code khi có thể. Sử dụng URL Endpoint có phân tầng logic. Đánh version trong URL thay vì trong HTTP Headers.
REST thích ứng tốt với các công nghệ web mới, dễ dàng sử dụng và bảo trì. Tách biệt rõ ràng giữa server và client, chỉ giao tiếp thông qua các phương thức HTTP và URI (đọc lại bài viết REST 101). Các thông tin có thể được lưu lại phía client → tránh phải gọi đến resource nhiều lần. Có thể sử dụng bất kỳ cấu trúc nào (XML, JSON, hoặc cấu trúc do server và client quy ước với nhau).
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).
SOAP (Simple Object Access Protocol): Là một đặc tả giao thức nhắn tin để trao đổi thông tin có cấu trúc trong việc triển khai các dịch vụ web trong mạng máy tính. Nó sử dụng Tập thông tin XML cho định dạng thông báo và dựa trên các giao thức lớp ứng dụng, thường là Giao thức truyền siêu văn bản (HTTP) hoặc Giao thức truyền thư đơn giản (SMTP), để đàm phán và truyền thông.
Khả năng mở rộng (bảo mật và WS-Addressing là một trong những phần mở rộng đang được phát triển). Tính trung lập (SOAP có thể hoạt động trên bất kỳ giao thức nào như HTTP, SMTP , TCP , UDP). Độc lập (SOAP cho phép bất kỳ mô hình lập trình nào).
SOAP Envelope: Xác định tài liệu XML dưới dạng thông báo SOAP. SOAP Header: Chứa thông tin tiêu đề. SOAP Body: Chứa thông tin cuộc gọi và phản hồi. SOAP Fault: Cung cấp thông tin về các lỗi đã xảy ra trong khi xử lý thư.(Không cần thiết)
Chậm: SOAP sử dụng định dạng XML cần được phân tích cú pháp và cũng dài hơn. Sự phụ thuộc của WSDL: Nó phụ thuộc vào Web Services Description Language và không có bất kỳ cơ chế tiêu chuẩn hóa nào để khám phá động các dịch vụ.
Máy khách sẽ định dạng thông tin liên quan đến lệnh gọi thủ tục và bất kỳ đối số nào thành một thông báo SOAP và gửi nó đến máy chủ như một phần của yêu cầu HTTP. Quá trình đóng gói dữ liệu vào một thông điệp SOAP được gọi là Marshalling. Sau đó, máy chủ sẽ mở gói thông báo do máy khách gửi, xem máy khách yêu cầu gì và sau đó gửi phản hồi thích hợp trở lại máy khách dưới dạng thông báo SOAP. Thực hành mở gói một yêu cầu do khách hàng gửi được gọi là Demarshalling.
Hướng dẫn thiết kế và phát triển kiến trúc cho World Wide Web Xác định cách xây dựng (API), cho phép dữ liệu được giao tiếp giữa các ứng dụng, thành phần với ứng dụng, thành phần khác
SOAP | REST | |
---|---|---|
1 | Là một giao thức | Là một cách thiết kế kiến trúc |
2 | SOAP không thể sử dụng REST vì nó là giao thức | REST có thể dùng các web services sử dụng SOAP vì nó là mẫu kiến trúc |
3 | Cung cấp các giao diện dịch vụ (services interfaces) cho các thành phần bên ngoài sử dụng | Sử dụng địa chỉ URL để cung cấp các dịch vụ |
4 | Định nghĩa các chuẩn và quy tắc chặt chẽ | Không định nghĩa nhiều chuẩn như SOAP |
5 | Sử dụng băng thông và tài nguyên nhiều hơn, vì SOAP Messages chứa rất nhiều thông tin bên trong nó | Sử dụng băng thông và tài nguyên ít hơn, REST Messages chủ yếu chỉ bao gồm các JSON Messages |
6 | Kế thừa chuẩn bảo mật tầng vận tải của giao thức mạng | Kế thừa chuẩn bảo mật tầng vận tải của giao thức mạng |
7 | Chỉ hỗ trợ định dạng dữ liệu XML | Hỗ trợ các định dạng dữ liệu khác nhau như text, HTML, XML, JSON,... |
8 | SOAP hỗ trợ cả hai giao thức SMTP và HTTP | REST gắn với giao thức HTTP |
9 | Stateful | Stateless |
Chuẩn giao tiếp chung - nếu cả máy khách và máy chủ đều có thỏa thuận về định dạng trao đổi Stateful - Sử dụng SOAP nếu server cần lưu dữ liệu của client.
Hạn chế về tài nguyên và băng thông - Vì SOAP Messages có nội dung nặng hơn và tiêu thụ băng thông lớn hơn nhiều, REST nên được sử dụng trong các trường hợp băng thông mạng hạn chế. Stateless - Nếu không cần lưu dữ liệu của client trên server thì REST nên được sử dụng. Caching - Nếu cần tăng độ truy xuất dữ liệu và giảm tải cho hệ thống thì REST là giải pháp. Đôi khi, khách hàng có thể yêu cầu cùng một tài nguyên nhiều lần. Điều này có thể làm tăng số lượng yêu cầu được gửi đến máy chủ. Bằng cách triển khai bộ nhớ cache, các kết quả truy vấn thường xuyên nhất có thể được lưu trữ ở một vị trí trung gian. Vì vậy, bất cứ khi nào máy khách yêu cầu một tài nguyên, trước tiên nó sẽ kiểm tra bộ nhớ cache. Nếu tài nguyên tồn tại sau đó, nó sẽ không tiến tới máy chủ. Vì vậy, bộ nhớ đệm có thể giúp giảm thiểu số lượng các chuyến đi được thực hiện đến máy chủ web. Dễ code - Code REST và việc triển khai tiếp theo dễ dàng hơn nhiều so với SOAP. Vì vậy, nếu web cần hoàn thành nhanh chóng, thì REST là lựa chọn phù hợp.
Trên đây là những chia sẻ của mình về Rest và Soap. Chắc chắn mình vẫn còn những sai sót trong bài viết. Cảm ơn vì đã dành thời gian đọc bài viết của mình. Nếu có gì comment phía dưới nhé.
Nguồn: viblo.asia