Chương 1: Dịch vụ web và REST Giới thiệu chung về dịch vụ web, kiến trúc và các thành phần cơ bản của dịch vụ web như XML, SOAP, WSDL và UDDI đồng thời giới thiệu về REST, mô tả về REST và sự phù hợp của nó với nền tảng cơ bản với dịch vụ web, đưa ra lý do tại sao chọn REST để phát triển dịch vụ web và giới thiệu dịch vụ RESTful mà tác giả sẽ phát triển trong luận văn này Chương 2: Bảo mật với RESTful Chương này giới thiệu các phương pháp bảo mật cơ bản cũng như cách thực hiện và áp dụng vào hệ thống được tác giả trình bày trong chương này Chương 3: Khung làm việc Laravel Giới thiệu về khung làm việc Laravel, là một khung làm việc định nghĩa và hỗ trợ thực thi các dịch vụ RESTful. Chương 4: Xây dựng và phát triển bộ API TOPUP Chương này sẽ giới thiệu chi tiết về hệ thống TOPUP, nguyên tắc hoạt động của hệ thống cũng như mục tiêu mà hệ thống cần đạt được, áp dụng các nguyên tắc của REST và sử dụng các thư viện của khung làm việc Laravel để thiết kế các RESTfull API ứng dụng vào hệ thống TOPUP, ngoài ra các lược đồ tuần tự sẽ được thiết kế và chỉ ra trong chương này để ta có thể thấy được RESTfull API phân biệt các môđun khác như thế nào và tương tác thế nào.TOPUP 2 TIEU LUAN MOI download : skknchat@gmail.TOPUP CHƢƠNG 1: DỊCH VỤ WEB VÀ REST 1.1 Tổng quan về dịch vụ web Theo định nghĩa của W3C (World Wide Web Consortium) [8] thì một dịch vụ web là một hệ thống phần mềm được xây dựng sẵn các tính năng cần thiết, hay còn gọi là các phương thức theo chuẩn để hỗ trợ sự tương tác giữa máy tính và máy tính, giữa người và máy tính. Dịch vụ web cung cấp một API được mô tả theo một định dạng chung gọi là ngôn ngữ mô tả dịch vụ web (Web Service Description Language) viết tắt là WSDL [11]. Người dùng hoặc máy tính thực hiện tương tác với dịch vụ web thông qua giao thức SOAP (Simple Object Access Protocol) [10].
Đây là một trong các giao thức được sử dụng để trao đổi thông tin trên mạng phổ biến nhất hiện nay sử dụng HTTP (Hypertext Transfer Protocol) [2,3] kết hợp với việc sử dụng XML cùng với một số chuẩn khác. Như vậy ta thấy mục đính chính của dịch vụ web là cho phép trao đổi và tương tác thông tin giữa các ứng dụng một cách dễ dàng mà không cần quan tâm đến môi trường phát triển cũng như ngôn ngữ lập trình bởi tất cả đã cả được quy về một định dạng chung. Ngoài ra bản chất của dịch vụ web là một tập hợp các đối tượng, các phương thức được thực thi và công bố lên mạng để có thể triệu gọi được từ xa thông qua các ứng dụng khác nhau.2 Kiến trúc và c c thành phần của dịch vụ web Phần lớn công nghệ dịch vụ web được xây dựng trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận. Nó tích hợp các ứng dụng trên nền web lại với nhau bằng cách sử dụng các công nghệ XML, SOAP, WSDL, và UDDI [8] trên nền tảng các giao thức Internet với mục tiêu tích hợp ứng dụng và truyền thông điệp.
Trong đó XML được sử dụng để đánh dấu dữ liệu, SOAP được dùng để truyền dữ liệu, WSDL được sử dụng để mô tả các dịch vụ có sẵn và UDDI được sử dụng để liệt kê những dịch vụ nào hiện tại đang có sẵn để có thể sử dụng. Chi tiết của các chuẩn mở này chúng ta sẽ bàn chi tiết trong phần sau, phần các thành phần cơ bản của dịch vụ web.TOPUP 3 TIEU LUAN MOI download : skknchat@gmail. Mô tả kiến trúc dịch vụ web 1.1 XML XML (Extensible Markup Langguage) là một chuẩn do W3C đề ra và được phát triển từ SGML, XML là một ngôn ngữ đánh dấu mở rộng với cấu trúc do lập trình viên phát triển dịch vụ tự định nghĩa. Về hình thức thì XML hoàn toàn có cấu trúc thẻ giống như HTML, nhưng HTML định nghĩa thành phần được hiển thị như thế nào thì XML lại định nghĩa những thành phần đó chứa những cái gì.
Hay nói cách khác XML có cú pháp tương tự HTML nhưng không tuân theo một đặc tả quy ước như HTML. Người sử dụng hoặc các chương trình có thể quy ước định dạng các thẻ XML. Dịch vụ web là sự kết hợp của nhiều thành phần khác nhau, và dịch vụ này hỗ trợ tương tác giữa các hệ thống được cài đặt trên môi trường khác nhau. Do đó cần phải sử dụng một loại tài liệu đồng nhất giúp giải quyết được vấn đề tương thích và XML hoàn toàn phù hợp với yêu cầu trên.
XML đã trở thành nền tảng cho việc xây dựng các dịch vụ web và XML có hai chức năng chính: - Trao đổi thông tin dữ liệu trong hệ thống sử dụng dịch vụ web - Mô tả các giao thức sử dụng trong dịch vụ web 1.2 SOAP SOAP (Simple Object Access Protocol) là một giao thức dùng để truy xuất các thông tin từ dịch vụ web thông qua một thông điệp chung. SOAP được Microsoft đề xuất vào năm 1998. Hiện nay SOAP thuộc quyền quản lý và cải tiến của tổ chức W3C. SOAP là một giao thức dựa trên nền tảng XML, một giao thức truyền thông hay một định dạng để gửi tin nhắn cho phép các ứng dụng trao đổi thông tin với nhau qua HTTP.TOPUP TIEU LUAN MOI download : skknchat@gmail.
Đặc điểm của SOAP - Khả năng mở rộng (Extensible): Cung cấp khả năng mở rộng phục vụ cho nhu cầu đặc thù của ứng dụng và nhà cung cấp. Các chức năng về bảo mật, tăng độ tin cậy có thể đưa vào phần mở rộng của SOAP. Các nhà cung cấp dịch vụ khác nhau, tùy vào đặc điểm hệ thống của mình có thể định nghĩa thêm các chức năng mở rộng nhằm tăng thêm lợi thế cạnh tranh cũng như cung cấp thêm tiện ích cho người sử dụng. - Có thể hoạt động tốt trên các giao thức mạng đã được chuẩn hóa (HTTP, SMTP, FTP, TCP,.) - Có tính độc lập nền, độc lập ngôn ngữ lập trình, mô hình lập trình được sử dụng.
Cấu trúc thông điệp của SOAP Thông điệp SOAP bao gồm phần tử gốc envelope bao trùm toàn bộ nôi dung thông điệp SOAP, và các phần tử header và body. Phần tử header chứa các khối thông tin có liên quan đến cách thức các thông điệp được xử lý như thế nào. Nó bao gồm việc định tuyến và các thiết lập cho việc phân phối các thông điệp. Ngoài ra phần tử Header còn có thể chứa các thông tin về việc thẩm định quyền, xác minh và các ngữ cảnh cho các giao dịch.
Các dữ liệu thực sự được lưu trữ tại phần tử body. Bất cứ thứ gì có thể trình bày bằng cú pháp XML đều nằm trong phần tử body của một thông điệp SOAP. Mô tả cấu trúc của một thông điệp SOAP Tất cả các phần tử envelope đều chứa chính xác một phần tử body. Phần tử body có thể chứa các nốt con theo yêu cầu.
Nội dung của phần tử body là các thông điệp. Nếu phần tử envelope mà chứa phần tử header, nó chỉ chứa không nhiều hơn một phần tử header và phần tử header này bắt buộc phải là phần tử con đầu tiên của phần tử envelope. Mỗi một phần tử chứa header đều được gọi là header block. Mục đích của (LUAN.TOPUP 5 TIEU LUAN MOI download : skknchat@gmail.TOPUP header block cung cấp giao tiếp các thông tin theo ngữ cảnh có liên quan đến quy trình xử lý các thông điệp SOAP.3 WSDL WSDL (Web Service Description Language) là một tài liệu đặc tả dựa trên chuẩn ngôn ngữ XML để mô tả các dịch vụ web.
Ban đầu WSDL được Microsoft và Ariba đề xuất, nhưng hiện nay WSDL được quản lý và phát triển bởi W3C. Mỗi một đặc tả WSDL sẽ cung cấp tài liệu cho các hệ thống phân tán cũng như mô tả chức năng của một dịch vụ web, cách thức tương tác, các thông điệp tương tác cho các yêu cầu theo request hay response. Sau đây là cấu trúc cơ bản của một tài liệu: Hình 1. Cấu trúc của WSDL Một đặc tả WSDL bao gồm 2 phần chính: phần trừu tượng (Abstract definitions) và phần cụ thể (Concrete definitions), phần trừu tượng bao gồm các thông tin được chứa trong các thẻ types, message và portypes.
Phần cụ thể bao gồm các thông tin được chứa trong các thẻ bindings và ports. Mỗi thành phần sẽ có một tham chiếu đến một thành phần khác được mô tả như hình sau: Hình 1. Các thành phần của WSDL Mỗi một thành phần có một chức năng riêng, cụ thể như sau: (LUAN.TOPUP 6 TIEU LUAN MOI download : skknchat@gmail.TOPUP - Types: chỉ ra kiểu dữ liệu cho các thông điệp gửi và nhận. - Messages: là một thành phần trừu tượng mô tả cách thức giao tiếp giữa máy khách và máy chủ.
- Porttypes: mô tả ánh xạ giữa các thông điệp, được mô tả trong phần tử messages và các phương thức (operations). - Binding: xác định giao thức nào được sử dụng khi giao tiếp với dịch vụ web, định nghĩa kiểu binding và giao thức vận chuyển binding cũng định nghĩa các operations. - Port: chỉ định địa chỉ và cổng kết nối tới dịch vụ web, thường là một địa chỉ URL đơn giản.4 UDDI UDDI (Universal Description, Discovery và Integration) cũng được Microsoft, IBM và Ariba đề xuất năm 2000. Ngày nay UDDI thuộc quyền sở hữu và phát triển của tổ chức OASIS (Organization for the Advancement of Structured Information Standards).
UDDI được xây dựng nhằm mục đích cung cấp khả năng cho phép công bố, tổng hợp và tìm kiếm các dịch vụ web. UDDI đưa ra một tập hợp các hàm API được chia làm 2 phần: Inquiry API, dùng để tìm kiếm và truy xuất các dịch vụ web đã đăng ký và Publisher’s API, dùng để công bố các dịch vụ web muốn đăng ký. Thông tin tổ chức trong UDDI được chia làm 3 phần: - White pages: liệt kê thông tin của các nhà cung cấp dịch vụ web, bao gồm địa chỉ, thông tin liên lạc và định danh. - Yellow pages: phân loại dịch vụ theo tổ chức hay nhóm dịch vụ hoặc địa điểm đặt các dịch vụ.
- Green pages: cung cấp thông tin về các dịch vụ web, cách thức truy cập cũng như tương tác với các dịch vụ web đó.3 XML-PRC XML như đã nêu trong phần 1.1 được viết tắt của cụm từ Extensible Markup Language – Ngôn ngữ đánh dấu dữ liệu. RPC – được viết tắt của cụm từ Remote Procedure Call – Thủ tục gọi từ xa. RPC cung cấp cho người dùng để định nghĩa ra một giao diện mà có thể được gọi từ xa thông qua môi trường mạng máy tính.