RESTful Web Service là gì vậy?

1- Web & Web Service

Trước khi trả lời câu hỏi về RESTful tôi muốn bạn phân biệt giữa web và web service.

Khi bạn gõ vào một URL vào trình duyệt và bạn nhận được một trang web. Đây là một nội dung mà thông thường bạn có thể đọc được, nó là nội dung dành cho người sử dụng ở đầu cuối.

RESTful Web Service là gì vậy?

Bạn đang đọc: RESTful Web Service là gì vậy?

Trong khi đó Web Service là một dịch vụ web, nó là một khái niệm rộng hơn so với khái niệm web thông thường, nó cung cấp những thông tin thô, và khó hiểu với đa số người sử dụng, chính vì vậy nó được sử dụng bởi những ứng dụng. Các ứng dụng này sẽ chế biến những dữ liệu thô trước khi trả về cho người sử dụng cuối cùng.

Ví dụ bạn vào một trang web ABC nào đó để xem thông tin về thời tiết và chứng khoán. Trang web đó sẽ hiển thị cho bạn những thông tin bạn muốn.

Để có được những dữ liệu về thời tiết ứng dụng ABC cần phải lấy thông tin từ một nguồn nào đó, nó có thể là một dịch vụ web chuyên cung cấp những số liệu thời tiết ứng với những vùng miền khác nhau. Tương tự như vậy để có những số liệu về chứng khoán ứng dụng ABC cũng cần phải liên hệ với dịch vụ cung cấp những số liệu này. Các dữ liệu sẽ được chế biến trước khi trả về cho bạn là một trang web hoàn chỉnh.

Các Web Service thường cung cấp những dữ liệu thô mà nó khó hiểu đối với đa số người sử dụng thông thường, chúng thường được trả về dưới dạng XML hoặc JSON.

2- RESTful Service là gì vậy?

RESTful Web Service là những 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 những Web Service dựa trên SOAP WSDL. RESTful Web Service nhẹ (lightweigh), dễ dàng mở rộng và bảo trì.

Những khái niệm đầu tiên về REST (REpresentational State Transfer) được đưa ra vào năm 2000 trong luận văn tiến sĩ của Roy Thomas Fielding (đồng sáng lập giao thức HTTP). Trong luận văn ông giới thiệu khá chi tiết về những ràng buộc, quy ước cũng như phương pháp thức thực hiện với hệ thống để có được một hệ thống REST.

REST định nghĩa những quy tắc kiến trúc để bạn thiết kế Web services, chú trọng vào tài nguyên hệ thống, bao gồm những trạng thái tài nguyên được định dạng như thế nào và được truyền tải qua HTTP, và được viết bởi nhiều ngôn ngữ khác nhau. Nếu tính theo số dịch vụ mạng sử dụng, 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ế SOAPWSDL vì nó đơn giản và dễ sử dụng hơn rất nhiều.

REST là một bộ quy tắc để tạo ra một ứng dụng Web Service, mà nó tuân thủ 4 nguyên tắc thiết kế cơ bản sau:

Sử dụng những phương thức HTTP một phương pháp rõ ràngPhi trạng tháiHiển thị cấu trúc thư mục như những URlsTruyền tải JavaScript Object Notation (JSON), XML hoặc cả hai.

Trong từ RESTful, thì từ ful chính là hậu tố (suffix) trong tiếng Anh, giống như từ help có nghĩa là giúp đỡ thì từ helpful là rất hữu ích.

3- Sử dụng những phương thức HTTP một phương pháp rõ ràng

REST đặt ra một quy tắc đòi hỏi lập trình viên xác định rõ ý định của mình thông qua những phương thức của HTTP. Thông thường ý định đó bao gồm lấy dữ liệu, trèn dữ liệu, cập nhập dữ liệu hoặc xóa dữ liệu. Vậy khi bạn muốn thực hiện một trong những ý định trên hãy lưu ý những quy tắc sau:

Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương thức POST.Để truy xuất một tài nguyên, sử dụng GET.Để thay đổi trạng thái một tài nguyên hoặc để cập nhật nó, sử dụng PUT.Để huỷ bỏ hoặc xoá một tài nguyên, sử dụng DELETE.

Chú ý rằng những nguyên tắc ở trên là không bắt buộc, thực tế bạn có thể sử dụng phương thức GET để yêu cầu lấy dữ liệu, trèn, sửa hoặc xóa dữ liệu trên Server. Tuy nhiên REST đưa ra những nguyên tắc ở trên mục đích đưa mọi thứ trở lên rõ ràng và dễ hiểu.

Ví dụ dưới đây là phương pháp bạn sử dụng GET để yêu cầu thêm dữ liệu trên server (Chú ý, đây là phương pháp trái với nguyên tắc của REST).

Sử dụng GET để yêu cầu thêm một người sử dụng có tên Robert.

GET /adduser?name=Robert HTTP/1.1

Sử dụng GET để yêu cầu server đổi tên người sử dụng có tên Robert thành Smith.

GET /updateuser?name=Robert&newname=Smith HTTP/1.1

Và bây giờ theo những quy tắc của REST mọi thứ trở lên rõ ràng hơn.

Gửi lệnh HTTP POST để thêm tài liệu :

POST /users/Robert HTTP/1.1 Host: myserver Content-Type: application/xml Robert

Gửi một lệnh GET nếu bạn muốn lấy dữ liệu trên hệ thống.

GET /users/Robert HTTP/1.1 Host: myserver Accept: application/xml

Gửi một lệnh PUT nếu bạn muốn cập nhập dữ liệu.

PUT /users/Robert HTTP/1.1 Host: myserver Content-Type: application/xml Smith

Gửi lệnh DELETE nếu bạn muốn xóa dữ liệu :

DELETE /users/Robert HTTP/1.1

4- Phi trạng thái (Stateless)

Một đặc điểm của REST là phi trạng thái (stateless), có nghĩa là nó không lưu giữ thông tin của client. Chẳng hạn bạn vừa gửi yêu cầu để xem trang thứ 2 của một tài liệu, và bây giờ bạn muốn xem trang tiếp theo (sẽ là trang 3). REST không lưu trữ lại thông tin rằng trước đó nó đã phục vụ bạn trang số 2. Điều đó có nghĩa là REST không quản lý phiên làm việc (Session).

Hình dưới đây minh họa một ứng dụng có lưu trữ trạng thái, nó biết người sử dụng đang xem trang số mấy. Và người sử dụng chỉ cần yêu cầu “Trang Tiếp theo” để nhận được trang mong muốn.

Với những phong cách thiết kế phi trạng thái, Client phải gửi nhu yếu rõ ràng, gồm có số thự tự của trang cần xem .

Như vậy, những thành phần máy chủ phi trạng thái ít phức tạp hơn để thiết kế, viết và phân bổ thông qua máy chủ được cân bằng tải. Dịch vụ phi trạng thái không chỉ hoạt động tốt hơn, nó còn chuyển hầu hết vai trò duy trì trạng thái sang ứng dụng ở máy khách. Trong một dịch vụ mạng RESTful, máy chủ chịu trách nhiệm đưa ra những phản hồi và cung cấp một phương pháp thức cho phép Client duy trì trạng thái ứng dụng của chính nó.

5- Đưa ra cấu trúc thư mục giống những URI

REST đưa ra một cấu trúc để người sử dụng có thể truy cập vào tài nguyên của nó thông qua những URL, tài nguyên ở đây là tất cả những cái mà bạn có thể gọi tên được (Video, ảnh, báo cáo thời tiết,..)

Bạn cần tạo ra những REST serivce để nó trả về cho người sử dụng những nguồn tài nguyên tương ứng .

Các địa chỉ REST service cần phải thật trực quan đến mức người sử dụng dễ đoán. Hãy nghĩ về một địa chỉ (URI) giống như một gợi ý rõ ràng, dễ đoán rằng nó đang trỏ tới cái gì và cung cấp tài nguyên gì. Tóm lại, cấu trúc của một URI nên được đơn giản, có thể dự đoán, và dễ hiểu.

Hãy xem một URL dưới đây, nó cung ứng thông tin thời tiết của một khu vực ứng với một ngày đơn cử, và nó dễ hiểu so với người sử dụng .

http://myservice.com/weather/chicago/2016-09-27 http://myservice.com/weather/hanoi/2016-11-11

Một vài nguyên tắc bổ sung để lưu ý trong khi nói về cấu trúc địa chỉ của RESTful Web service là:

Giấu những đuôi tài liệu mở rộng của bản gốc trong máy chủ (.jsp, .php, .asp), nếu có, vì vậy bạn có thể giấu một số thứ mà không cần thay đổi địa chỉ Urls.Để mọi thứ là chữ thường.Thay thế những khoảng trống bằng gạch chân hoặc hoặc gạch nối (một trong hai loại).Tránh những chuỗi yêu cầu càng nhiều càng tốt.Thay vì sử dụng mã (404 Not Found) khi yêu cầu địa chỉ cho một phần đường dẫn, luôn luôn cung cấp một trang mặc định hoặc tài nguyên như một phản hồi.

6- Truyền tải XML, JSON hoặc cả hai

Khi Client gửi một nhu yếu tới web service nó thường được truyền tải dưới dạng XML hoặc JSON và thường thì nhận về với hình thức tương tự như .

Đôi khi Client cũng có thể chỉ định kiểu dữ liệu nhận về mà nó mong muốn (JSON, hoặc XML,..), những chỉ định này được gọi là những kiểu MINE, nó được gửi kèm trên phần HEADER của request.

Dưới đây là những kiểu MINE phổ biến thường sử dụng với REST service.

MIME-Type Content-Type

JSON application/json

XML application/xml

XHTML application/xhtml+xml

Ví dụ Client gửi một yêu cầu để lấy thông tin thời tiết, và yêu cầu dữ liệu trả về là định dạng XML.

GET /weather/chicago/2016-08-27 HTTP/1.1 Host: myservice.com Accept: application/xml;q=0.5

Và tài liệu nhận được :

2016-08-27ChicagoHot”//

Trường hợp client nhu yếu tài liệu trả về có định dạng JSON :

{ “date”: “2016-08-27”, “location”: “Chicago”, “info”: “Hot” }

7- Java RESTful Service cho người mới bắt đầu

Giới thiệu: Quang Sơn

Quang Sơn là giám đốc hocdauthau.com - Kênh thông tin học đấu thầu, kiến thức tổng hợp, công nghệ, đời sống.

0 Shares
Share
Tweet
Pin