Hỏi về sự khác nhau giữa HTTP và RestFul

Mình đọc trên một số blog thấy có người bảo là sử dụng web service RestFul, rồi một số comment bảo là sao ko dùng Web service HTTP(POST/GET) cho khỏe, dùng Restful làm gì cho mệt.

Cơ mà đọc các ví dụ thì mình thấy RestFul hình như cũng sử dụng HTTP(Post/Get) mà nhỉ. Vậy sự khác biệt ở đây là gì ? Vậy là khi viết web service mình làm sao biết web service của mình là dạng HTTP hay là dạng RestFul ?

Có ai giúp mình liệt kê rõ có bao nhiêu cách mà Client có thể get dữ liệu về từ một Server (như dùng Webservice, socket…) để mình có cái nhìn tổng quan hơn về chỗ này. Cảm ơn

HTTP là một giao thức truyền dữ liệu. Nói đơn giản như là một là cách thức, quy định, quy ước để 2 bên có thể hiểu nhau, ở đây là client và server.
Restful là một phong cách /chuẩn kiến trúc tổ chức và xây dựng web service.
HTTP và Restful là hai thứ không thể so sánh với nhau, Restful thường được xây dựng dựa trên giao thức HTTP, nhưng không nhất thiết phải xây dựng trên HTTP.

Có rất nhiều cách để client có thể lấy dữ liệu từ server về client, chẳng hạn như bạn quăng 1 file tĩnh lên server rồi client lấy nó về, không thông qua trung gian xử lý gì cả. Nhưng xét về web service có hai phong cách / chuẩn thiết kế phổ biến là Restful và Soap. Socket được sử dụng khi cần giao tiếp liên tục, duy trì kết nối, thời gian thực đến server, Restful, Soap thì xử lý từng request đơn lẻ, không liên tục, không duy trì kết nối và trạng thái (stateless). Ngoài ra thì bạn có thể tìm hiểu thêm trên mạng http://en.wikipedia.org/wiki/List_of_web_service_protocols

7 Likes

Bạn đọc về RESTful ở đây nhé http://www.ibm.com/developerworks/vn/library/ws-restful/

RESTful communicate over the Hypertext Transfer Protocol with the same HTTP verbs (GET, POST, PUT, DELETE, etc.) used by web browsers to retrieve web pages and send data to remote servers.

REST không phải là 1 protocol nên không thể so sánh với HTTP.
REST định nghĩa các quy tắc kiến trúc để bạn thiết kế Web services bằng việc truyền tải dữ liệu thông qua HTTP.

Tại sao dùng REST đơn giản vì nó đã được hỗ trợ sẵn dựa trên HTTP, một giao thức vô cùng phổ biến.
Do là webservice nên kiểu dữ liệu truyền tải (Internet Media Type) là đa dạng. Và phổ thông thường dùng là JSON và XML.

2 Likes

@Uchiha_Itachii, như vậy có cách nào mà xây dựng một web service mà không phải là REST nhưng vẫn sử dụng giao thức HTTP không ?

Có đó bạn trả giữ liệu thông qua ajax, nhưng bad idead

Thật ra đa số web services là dựa trên HTTP á bạn, vì dữ liệu truyền qua lại là thông thường text (hoặc văn bản có cấu trúc như XML, JSON) nên sử dụng HTTP là dễ dàng nhất.

Không đúng nha bạn, để gọi restful web service từ javascript client bạn có thể sử dụng ajax

Bạn ơi cho mình hỏi tý, ví dụ như mình viết 1 servlet có hàm get trả về 1 trang dữ liệu dạng json, thì liệu đây đã được gọi là restful chưa ? chỉ có điều là chưa có annotation cho có đường dẫn tùy ý, phải dùng đường dẫn của servlet này ?

Không REST thì có SOAP đó thôi vẫn là HTTP

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?