2013-04-09 44 views
15

Đối với các dịch vụ web SOAP, có một đặc tả mà tất cả các yêu cầu/phản hồi phải tuân theo. Đặc tả này ở dạng tài liệu WSDL. Tuy nhiên đối với các dịch vụ web REST, tại sao không có đặc tả hoặc WSDL như vậy? Điều này làm cho REST dễ bị tổn thương hơn với các ngoại lệ thời gian chạy vì chúng ta không tuân theo bất kỳ thông số kỹ thuật nào?Tại sao REST không có WSDL không giống như SOAP

Trả lời

12

REST thực sự chỉ sử dụng các động từ HTTP (GET, PUT, POST, DELETE,…) trên tài nguyên. Tất cả các hoạt động trên một tài nguyên được cho là đại diện theo cách đó. POST được sử dụng như một sự bắt tất cả khi bạn không thể diễn tả logic kinh doanh của bạn theo cách phù hợp với ba loại khác. Đó là lý do tại sao không thực sự là một WSDL cho một dịch vụ REST vì bạn chỉ có 4 phương thức trên tài nguyên.

Nhưng bạn vẫn có the possibility to describe a REST web service with WSDL 2.0.

+14

Đề xuất rằng một cái gì đó như WSDL không cần thiết cho các dịch vụ REST vì việc sử dụng các động từ HTTP tiêu chuẩn là gây hiểu nhầm. Thực tế là nói chung bạn không thể dựa vào các triển khai REST khác nhau để sử dụng HTTP theo cùng một cách, và động từ HTTP không cho bạn biết bất kỳ điều gì về các biểu diễn mà chúng hành động. Vì vậy, đối với bất kỳ dịch vụ REST nào, có rất nhiều thông tin về cách sử dụng nó, để những người triển khai phát triển một số phương tiện ngoài băng để mô tả nó, từ "đọc tài liệu của chúng tôi" đến "lướt qua trình duyệt của bạn và tìm ra nó ". – Hoobajoob

2

SOAP là một giao thức.
REST là một kiến ​​trúc.

Trong nhiều tài liệu tham khảo, bạn sẽ thấy REST và SOAP cả đề cập như đối thủ cạnh tranh. Điều đó không đúng. SOAP thực ra là một giao thức chứ không phải kiểu dáng kiến ​​trúc . Những gì REST có thể được so sánh với SOA và RPC. Tất cả ba là ví dụ về các kiểu dịch vụ web, mỗi kiểu có tiêu điểm khái niệm riêng của chúng. RPC tập trung xung quanh các hoạt động, SOA xung quanh thư và REST xung quanh tài nguyên. (ref)

Vì vậy, đối với SOAP, đã viết WSDL document standards. Nhưng đối với REST không có tài liệu chuẩn, nhưng có nhiều cách thực hành tốt nhất là http://jsonapi.org

Các vấn đề liên quan