Đố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
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.
Có loạt các cách để xác định một API RESTful giống như WSDL cho SOAP:
Bạn có thể tìm thêm thông tin tại đây trên my blog post.
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
- 1. tại sao SOAP không có WSDL?
- 2. WSDL cho SOAP và WSDL cho REST và REST dựa trên JSON
- 3. JSON, REST, SOAP, WSDL và SOA: Tất cả chúng liên kết với nhau như thế nào
- 4. Hành động SOAP WSDL
- 5. Nếu SOAP bây giờ được coi là overengineered trên REST tại sao không WCF?
- 6. javax.xml.ws.WebServiceException: Không xác định loại cổng Java Struts SOAP WSDL
- 7. REST vs SOAP - SOAP thực sự an toàn hơn REST?
- 8. Mảng hỗn hợp WSDL SOAP
- 9. REST vs SOAP evolvability
- 10. Lỗi WSDL: SOAP-ERROR: Phân tích cú pháp WSDL: Không thể tải từ
- 11. Tại sao "www.example.com" không giống với "example.com"?
- 12. Tại sao Ổ cắm web không sử dụng SOAP?
- 13. Hỗ trợ WSDL/SOAP trên Go?
- 14. Tại sao một người sử dụng REST thay vì các dịch vụ dựa trên SOAP?
- 15. WSDL có thể chỉ ra phiên bản SOAP (1.1 hoặc 1.2) của dịch vụ web không?
- 16. Làm thế nào để sử dụng Soap UI mà không cần wsdl?
- 17. Có ai có thể giới thiệu dịch vụ web REST/SOAP cho số VIN không?
- 18. omu.valueinjecter bản sao sâu không giống như các loại
- 19. Tại sao ValueType.GetHashCode() được triển khai giống như vậy?
- 20. Tại sao MySQL xử lý é giống như e?
- 21. Tại sao các đối số không tạo() hoạt động giống như setProperties()?
- 22. Tại sao Pylint không giống như các chức năng tích hợp?
- 23. tại sao defun không giống như (setq <name><lambda>)?
- 24. Tại sao kích thước của một dict trống giống như một dict không trống trong Python?
- 25. Tại sao [1.n] không được xử lý giống như [n..1] trong Haskell?
- 26. Tại sao mô hình Vứt bỏ trong C# không hoạt động giống như RAII trong C++
- 27. numpy.genfromtxt tạo ra mảng giống như bộ dữ liệu, không phải mảng 2D — tại sao?
- 28. Tại sao không phải là "lặp lại" * 3` giống như "3 *" lặp lại "" trong Ruby?
- 29. Dịch vụ RESTful - WSDL Tương đương
- 30. Tại sao "foo" .toString() không giống với toString.call ("foo")?
Đề 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