Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
1,08 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN NGUYỄN TRỌNG PHỔ NGHIÊNCỨURESTFULAPIVÀỨNGDỤNGXÂYDỰNGHỆTHỐNGTOPUP Ngành: Công nghệ thông tin Chuyên ngành: Quản lý hệthốngthông tin Mã số: Chuyên ngành đào tạo thí điểm LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Nguyễn Đình Hóa HÀ NỘI – 2016 MỤC LỤC PHẦN MỞ ĐẦU i CHƯƠNG 1: DỊCH VỤ WEB VÀ REST 1.1 Tổng quan dịch vụ web 1.2 Kiến trúc thành phần dịch vụ web 1.2.1 XML 10 1.2.2 SOAP 10 1.2.3 WSDL 12 1.2.4 UDDI 13 1.3 XML-PRC 1.4 REST 15 13 1.5 Nguyên tắc REST 15 1.5.1 Tài nguyên 15 1.5.2 Khả đánh địa 16 1.5.3 Phi trạng thái 17 1.5.4 Kết nối 17 1.5.5 Giao diện đồng Error! Bookmark not defined 1.5.6 Khả lưu cache Error! Bookmark not defined 1.6 Tại lựa chọn REST Error! Bookmark not defined 1.7 Dịch vụ web kiểu REST Error! Bookmark not defined CHƯƠNG 2: BẢO MẬT VỚI DỊCH VỤ WEB KIỂU REST DEFINED 2.1 Giới thiệu ERROR! BOOKMARK NOT Error! Bookmark not defined 2.2 Kiểu kiến trúc REST phù hợp với đệm web Error! Bookmark not defined 2.3 Khóa mã nội dung đối xứng Error! Bookmark not defined 2.4 Bàn giải pháp Error! Bookmark not defined 2.5 Kết luận Error! Bookmark not defined 2.5.1 Bảo mật với JSON Web Token Error! Bookmark not defined 2.5.2 Bảo mật với OAuth2 Error! Bookmark not defined 2.5.3 Lựa chọn giải pháp Error! Bookmark not defined CHƯƠNG 3: KHUNG LÀM VIỆC LARAVEL ERROR! BOOKMARK NOT DEFINED 3.1 Giới thiệu Error! Bookmark not defined 3.2 Lịch sử phát triển Laravel Error! Bookmark not defined 3.3 Cấu trúc Laravel Error! Bookmark not defined ii 3.3.1 Route Error! Bookmark not defined 3.3.2 Controller Error! Bookmark not defined 3.3.3 Eloquent ORM Error! Bookmark not defined 3.4 Bảo mật với Laravel Error! Bookmark not defined 3.4.1 Giả mạo yêu cầu (Cross-site Request Forgery - CSRF) Error! Bookmark not defined 3.4.2 Kịch lệnh ( Cross-site Scripting (XSS) Error! Bookmark not defined 3.4.3 Nhúng câu lệnh SQL ( SQL Injection) Error! Bookmark not defined 3.4.4 Phép gán ạt (Mass Assignment) Error! Bookmark not defined 3.4.5 Cookies Error! Bookmark not defined 3.4.6 HTTPS Error! Bookmark not defined CHƯƠNG 4: THIẾT KẾ VÀ THỰC HIỆN HỆTHỐNGAPITOPUP ERROR! BOOKMARK NOT DEFINED 4.1 Giới thiệu hệthốngTOPUP Error! Bookmark not defined 4.2 Nguyên tắc hoạt động Error! Bookmark not defined 4.3 Tổng quan hệthống VTA TOPUPAPI Error! Bookmark not defined 4.3.1 Tổng quan APIs Error! Bookmark not defined 4.3.2 Kết nối Error! Bookmark not defined 4.3.3 Luồng hoạt động TOPUP Error! Bookmark not defined 4.3.4 Giao thức TCP/IP Error! Bookmark not defined 4.3.5 Giao thức HTTP Error! Bookmark not defined 4.3.6 Bảo mật xác thực Error! Bookmark not defined 4.4 Áp dụng kiến trúc REST Error! Bookmark not defined 4.4.1 Tài nguyên Error! Bookmark not defined 4.4.2 Đánh địa Error! Bookmark not defined 4.4.3 Phi trạng thái Error! Bookmark not defined 4.4.4 Liên kết với Error! Bookmark not defined 4.4.5 Giao diện đồng Error! Bookmark not defined 4.4.6 Khả cache Error! Bookmark not defined 4.5 Thiết kế chi tiết API Error! Bookmark not defined 4.5.1 Phương thức “Ping” Error! Bookmark not defined 4.5.2 Phương thức “Check Wallet” Error! Bookmark not defined 4.5.3 Phương thức “Service Info” Error! Bookmark not defined 4.5.4 Phương thức “Topup” Error! Bookmark not defined 4.5.5 Phương thức “Trans History” Error! Bookmark not defined 4.5.6 Danh sách mã lỗi Error! Bookmark not defined 4.6 THử NGHIệM VÀ ĐÁNH GIÁ KếT QUả ERROR! BOOKMARK NOT DEFINED 4.6.1 Giới thiệu Error! Bookmark not defined 4.6.2 Một số đoạn code mô tả thực thi API Error! Bookmark not defined iii 4.6.3 Dùng thử API Error! Bookmark not defined DANH MỤC TÀI LIỆU THAM KHẢO 17 DANH MỤC TỪ VIẾT TẮT STT 10 11 12 13 14 15 16 17 18 19 20 Từ viết tắt API REST WSDL SOAP HTTP XML UDDI RPC URI JSON ICP HTCP TLS JWT HMAC SHA HTTPS NSD CSDL SQL Viết đầy đủ Application Programming Interface Representational State Transfer Web Service Description Language Simple Object Access Protocol Hypertext Transfer Protocol EXtensible Markup Language Universal Description, Discovery Integration Remote Procedure Call Uniform resource identifier JavaScript Object Notation Internet Cache Protocol Hypertext Caching Protocol Transport Layer Security JSON Web Token Hashing Message Authentication Codes Secure Hash Algorithm Hyper Text Transport Protocol Secure Ngƣời sử dụng Cơ sở liệu Structured Query Language iv DANH MỤC HÌNH, BẢNG, BIỂU DANH MỤC HÌNH HÌNH 1.1 MƠ Tả KIếN TRÚC DịCH Vụ WEB 10 HÌNH 1.2 MƠ Tả CấU TRÚC CủA MộT THƠNG ĐIệP SOAP HÌNH 1.3 CấU TRÚC CủA WSDL 11 12 HÌNH 1.4 CÁC THÀNH PHầN CủA WSDL 12 HÌNH 1.5 HAI URI CÙNG TRỏ ĐếN MộT TÀI NGUYÊN 16 HÌNH 1.6 MINH HọA TÌM KIếM BảN Đồ TRÊN GOOGLE MAPS 17 HÌNH 1.7 MINH HọA ĐạI DIệN LÀ MộT LIÊN KếT ERROR! BOOKMARK NOT DEFINED HÌNH 2.1 SƠ Đồ LUồNG HOạT ĐộNG CủA OAUTH2 ERROR! BOOKMARK NOT DEFINED HÌNH 3.1 Tỷ Lệ ĐÁNH GIÁ CÁC KHUNG LÀM VIệC PHP ERROR! BOOKMARK NOT DEFINED HÌNH 3.2 ÁNH Xạ GIữA ROUTE VÀ ACTION ERROR! BOOKMARK NOT DEFINED HÌNH 4.1 SƠ Đồ TổNG QUAN HệTHốNG VTA TOPUP ERROR! BOOKMARK NOT DEFINED HÌNH 4.2 KếT NốI CủA DịCH Vụ VTA TOPUP ERROR! BOOKMARK NOT DEFINED HÌNH 4.3 LUồNG HOạT ĐộNG CủA HệTHốNG VTA TOPUP ERROR! BOOKMARK NOT DEFINED HÌNH 4.4 LƯợC Đồ TUầN Tự API PING ERROR! BOOKMARK NOT DEFINED v HÌNH 4.5 LƯợC Đồ TUầN Tự CHECK WALLET ERROR! BOOKMARK NOT DEFINED HÌNH 4.6 LƯợC Đồ TUầN Tự LấY THƠNG TIN DịCH Vụ ERROR! BOOKMARK NOT DEFINED HÌNH 4.7 LƯợC Đồ TUầN Tự HÀNH ĐộNG TOPUP ERROR! BOOKMARK NOT DEFINED HÌNH 4.8 LƯợC Đồ TUầN Tự HÀNH ĐộNG LấY LịCH Sử GIAO DịCH ERROR! BOOKMARK NOT DEFINED HÌNH 4.9 LấY THƠNG TIN ĐƯợC TRUYềN VÀO HEADERERROR! BOOKMARK NOT DEFINED HÌNH 4.10 PHƯƠNG THứC XÁC THựC VÀ TạO CHữ KÝ ERROR! BOOKMARK NOT DEFINED HÌNH 4.11 HÌNH ảNH TạO MảNG REQUEST_HEADER ERROR! BOOKMARK NOT DEFINED HÌNH 4.12 HÌNH ảNH MƠ Tả VIệC GọI API PING ERROR! BOOKMARK NOT DEFINED HÌNH 4.13 HÌNH ảNH GIAO DIệN DÙNG THử API PING ERROR! BOOKMARK NOT DEFINED HÌNH 4.14 HÌNH ảNH GIAO DIệN DÙNG THử API CHECK WALLET ERROR! BOOKMARK NOT DEFINED HÌNH 4.15 HÌNH ảNH GIAO DIệN DÙNG THử API SERVICE INFO ERROR! BOOKMARK NOT DEFINED HÌNH 4.16 HÌNH ảNH GIAO DIệN DÙNG THử APITOPUP ERROR! BOOKMARK NOT DEFINED HÌNH 4.17 HÌNH ảNH GIAO DIệN DÙNG THử API TRANS HISTORY ERROR! BOOKMARK NOT DEFINED vi vii PHẦN MỞ ĐẦU Cơ sở khoa học tính cấp thiết đề tài Ngày hệthống Internet ngày phát triển, phần mềm sử dụnghệthống internet ngày nhiều Các phần mềm đa dạng dẫn đến có nhiều yêu cầu cần đƣợc đáp ứng Một số phần mềm đòi hỏi lƣợng thông tin lớn, liệu lớn… nhƣng lƣu liệu thiết bị sử dụng, số loại yêu cầu đƣợc cập nhật realtime (theo thời gian thực) để đảm bảo đắn thông tin (chứng khoán, tiền tệ ), số phần mềm đòi hỏi xử lý nhanh mạnh, mà thiết bị lại khơng thể thực đƣợc cấu hình không đủ Thông thƣờng, để sử dụng dịch vụ ngƣời dùng cần dùng trình duyệt, truy cập website thực Nhƣng ngƣời dùng sử dụng giao diện mà nhà cung cấp thiết kết sẵn nhiên chúng không đáp ứng mong muốn ngƣời dùng Để giải vấn đề cần xâydựngứngdụng có tính nhƣ dịch vụ nhƣng giao diện thân thiện Vì cần phải sử dụng dịch vụ riêng biệt để tƣơng tác với hệthống cung cấp dịch vụ nói Một hệthống nhƣ đƣợc gọi API Để giải vấn đề tác giả đề xuất luận văn “Nghiên cứuRESTfulAPIứngdụngxâydựnghệthống TOPUP” nhằm nghiêncứuxâydựnghệthốngAPI cung cấp cho khách hàng phƣơng án nạp tiền trực tiếp vào tài khoản thuê bao trả trƣớc, trả sau, tài khoản game, học trực tuyến,… thao tác đơn giản điện thoại, máy tính thiết bị khác có kết có kết nối internet, GPRS, Wifi 3G Mục tiêu nhiệm vụ đề tài - Hiểu đƣợc nguyên tắc REST - Hiểu đƣợc loại liệu đƣợc điều khiển Tiến hành cài đặt APIRESTful theo phƣơng pháp hệthống dựa web - Đƣa đƣợc phƣơng pháp xâydựng cách thức truy cập liệu sử dụngAPI REST - Tiến hành cài đặt APIRESTful theo phƣơng pháp - Cho thấy API vừa cài đặt dùng chung cho ngƣời máy Ý nghĩa khoa học đề tài - Nghiêncứu giải pháp xâydựng API, so sánh đƣa ƣu nhƣợc điểm giải pháp qua đƣa giải pháp phù hợp để xâydựngAPI - Áp dụng kết nghiêncứu để xây dựng, cài đặt thử nghiệm hệthốngAPITopUp gồm chức năng: kiểm tra số dƣ, lấy thông tin dịch vụ, thực TopUp, lấy lịch sử giao dịch Phương pháp nghiêncứu - Thu thập, phân tích tài liệu thông tin liên quan đề đề tài - Tìm hiểu giải pháp việc xâydựngAPI số Website nƣớc - Kết hợp nghiêncứu có trƣớc tác giả nƣớc với bảo, góp ý thầy hƣớng dẫn để hoàn thành nội dungnghiêncứu Phạm vi nghiêncứu - Nghiêncứu số giải pháp xâydựngAPI - Do có hạn chế định sở vật chất điều kiện tiếp cận thực tế với lĩnh vực viễn thông nên việc cài đặt ứngdụng chủ yếu mang tính thử nghiệm Các kết nghiên dự kiến cần đạt - Nghiêncứu số giải pháp xâydựng API, quy trình thực TopUp - Cài đặt thử nghiệm chức TopUp trực tuyến thông qua môi trƣờng web Bố cục luận văn Phần nội dung luận văn đƣợc bố cục thành chƣơng sau: Chương 1: Dịch vụ web REST Giới thiệu chung dịch vụ web, kiến trúc thành phần dịch vụ web nhƣ XML, SOAP, WSDL UDDI đồng thời giới thiệu REST, mô tả REST phù hợp với tảng với dịch vụ web, đƣa lý chọn REST để phát triển dịch vụ web giới thiệu dịch vụ RESTful mà tác giả phát triển luận văn Chương 2: Bảo mật với RESTful Chƣơng giới thiệu phƣơng pháp bảo mật nhƣ cách thực áp dụng vào hệthống đƣợc tác giả trình bày chƣơng Chương 3: Khung làm việc Laravel Giới thiệu khung làm việc Laravel, khung làm việc định nghĩa hỗ trợ thực thi dịch vụ RESTful Chương 4: Xâydựng phát triển APITOPUP Chƣơng giới thiệu chi tiết hệthống TOPUP, nguyên tắc hoạt động hệthống nhƣ mục tiêu mà hệthống cần đạt đƣợc, áp dụng nguyên tắc REST sử dụng thƣ viện khung làm việc Laravel để thiết kế RESTfull APIứngdụng vào hệthống TOPUP, lƣợc đồ đƣợc thiết kế chƣơng để ta thấy đƣợc RESTfull API phân biệt môđun khác nhƣ tƣơng tác CHƢƠNG 1: DỊCH VỤ WEB VÀ REST 1.1 Tổng quan dịch vụ web Theo định nghĩa W3C (World Wide Web Consortium) [8] dịch vụ web hệthống phần mềm đƣợc xâydựng sẵn tính cần thiết, hay gọi phƣơng thức theo chuẩn để hỗ trợ tƣơng tác máy tính máy tính, ngƣời máy tính Dịch vụ web cung cấp API đƣợc mô tả theo định dạng chung gọi ngôn ngữ mô tả dịch vụ web (Web Service Description Language) viết tắt WSDL [11] Ngƣời dùng máy tính thực tƣơng tác với dịch vụ web thông qua giao thức SOAP (Simple Object Access Protocol) [10] Đây giao thức đƣợc sử dụng để trao đổi thông tin mạng phổ biến sử dụng HTTP (Hypertext Transfer Protocol) [2,3] kết hợp với việc sử dụng XML với số chuẩn khác Nhƣ ta thấy mục đính dịch vụ web cho phép trao đổi tƣơng tác thông tin ứngdụng cách dễ dàng mà không cần quan tâm đến môi trƣờng phát triển nhƣ ngôn ngữ lập trình tất đƣợc quy định dạng chung Ngoài chất dịch vụ web tập hợp đối tƣợng, phƣơng thức đƣợc thực thi công bố lên mạng để triệu gọi đƣợc từ xa thơng qua ứngdụng khác 1.2 Kiến trúc thành phần dịch vụ web Phần lớn công nghệ dịch vụ web đƣợc xâydựng mã nguồn mở đƣợc phát triển từ chuẩn đƣợc công nhận Nó tích hợp ứngdụng web lại với cách sử dụng công nghệ XML, SOAP, WSDL, UDDI [8] tảng giao thức Internet với mục tiêu tích hợp ứngdụng truyền thơng điệp Trong XML đƣợc sử dụng để đánh dấu liệu, SOAP đƣợc dùng để truyền liệu, WSDL đƣợc sử dụng để mô tả dịch vụ có sẵn UDDI đƣợc sử dụng để liệt kê dịch vụ có sẵn để sử dụng Chi tiết chuẩn mở bàn chi tiết phần sau, phần thành phần dịch vụ web 10 Hình 1.1 Mơ tả kiến trúc dịch vụ web 1.2.1 XML XML (Extensible Markup Langguage) chuẩn W3C đề đƣợc phát triển từ SGML, XML ngôn ngữ đánh dấu mở rộng với cấu trúc lập trình viên phát triển dịch vụ tự định nghĩa Về hình thức XML hồn tồ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ƣ XML lại định nghĩa thành phần chứa Hay nói cách khác XML có cú pháp tƣơng tự HTML nhƣng không tuân theo đặc tả quy ƣớc nhƣ HTML Ngƣời sử dụng chƣơng trình quy ƣớc định dạng thẻ XML Dịch vụ web kết hợp nhiều thành phần khác nhau, dịch vụ hỗ trợ tƣơng tác hệthống đƣợc cài đặt môi trƣờng khác Do cần phải sử dụng loại tài liệu đồng giúp giải đƣợc vấn đề tƣơng thích XML hồn tồn phù hợp với yêu cầu XML trở thành tảng cho việc xâydựng dịch vụ web XML có hai chức chính: - Trao đổi thơng tin liệu hệthống sử dụng dịch vụ web - Mô tả giao thức sử dụng dịch vụ web 1.2.2 SOAP SOAP (Simple Object Access Protocol) giao thức dùng để truy xuất thông tin từ dịch vụ web thông qua thông điệp chung SOAP đƣợc Microsoft đề xuất vào năm 1998 Hiện SOAP thuộc quyền quản lý cải tiến tổ chức W3C SOAP giao thức dựa tảng XML, giao thức truyền thông hay định dạng để gửi tin nhắn cho phép ứngdụng trao đổi thông tin với qua HTTP a Đặc điểm SOAP 11 - Khả mở rộng (Extensible): Cung cấp khả mở rộng phục vụ cho nhu cầu đặc thù ứngdụng nhà cung cấp Các chức bảo mật, tăng độ tin cậy đƣa vào phần mở rộng SOAP Các nhà cung cấp dịch vụ khác nhau, tùy vào đặc điểm hệthống định nghĩa thêm chức mở rộng nhằm tăng thêm lợi cạnh tranh nhƣ cung cấp thêm tiện ích cho ngƣời sử dụng - Có thể hoạt động tốt 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 b Cấu trúc thông điệp SOAP Thông điệp SOAP bao gồm phần tử gốc envelope bao trùm toàn nôi dungthông điệp SOAP, phần tử header body Phần tử header chứa khối thông tin có liên quan đến cách thức thơng điệp đƣợc xử lý nhƣ Nó bao gồm việc định tuyến thiết lập cho việc phân phối thơng điệp Ngồi phần tử Header chứa thông tin việc thẩm định quyền, xác minh ngữ cảnh cho giao dịch Các liệu thực đƣợc lƣu trữ phần tử body Bất thứ trình bày cú pháp XML nằm phần tử body thơng điệp SOAP Hình 1.2 Mơ tả cấu trúc thông điệp SOAP Tất phần tử envelope chứa xác phần tử body Phần tử body chứa nốt theo yêu cầu Nội dung phần tử body thông điệp Nếu phần tử envelope mà chứa phần tử header, chứa khơng nhiều phần tử header phần tử header bắt buộc phải phần tử phần tử envelope Mỗi phần tử chứa header đƣợc gọi header block 12 Mục đích header block cung cấp giao tiếp thơng tin theo ngữ cảnh có liên quan đến quy trình xử lý thơng điệp SOAP 1.2.3 WSDL WSDL (Web Service Description Language) tài liệu đặc tả dựa chuẩn ngôn ngữ XML để mô tả dịch vụ web Ban đầu WSDL đƣợc Microsoft Ariba đề xuất, nhƣng WSDL đƣợc quản lý phát triển W3C Mỗi đặc tả WSDL cung cấp tài liệu cho hệthống phân tán nhƣ mô tả chức dịch vụ web, cách thức tƣơng tác, thông điệp tƣơng tác cho yêu cầu theo request hay response Sau cấu trúc tài liệu: Hình 1.3 Cấu trúc WSDL Một đặc tả WSDL bao gồm phần chính: phần trừu tƣợng (Abstract definitions) phần cụ thể (Concrete definitions), phần trừu tƣợng bao gồm thông tin đƣợc chứa thẻ types, message portypes Phần cụ thể bao gồm thông tin đƣợc chứa thẻ bindings ports Mỗi thành phần có tham chiếu đến thành phần khác đƣợc mơ tả nhƣ hình sau: Hình 1.4 Các thành phần WSDL 13 Mỗi thành phần có chức riêng, cụ thể nhƣ sau: - Types: kiểu liệu cho thông điệp gửi nhận - Messages: thành phần trừu tƣợng mô tả cách thức giao tiếp máy khách máy chủ - Porttypes: mô tả ánh xạ thông điệp, đƣợc mô tả phần tử messages phƣơng thức (operations) - Binding: xác định giao thức đƣợc sử dụng giao tiếp với dịch vụ web, định nghĩa kiểu binding giao thức vận chuyển binding định nghĩa operations - Port: định địa cổng kết nối tới dịch vụ web, thƣờng địa URL đơn giản 1.2.4 UDDI UDDI (Universal Description, Discovery Integration) đƣợc Microsoft, IBM Ariba đề xuất năm 2000 Ngày UDDI thuộc quyền sở hữu phát triển tổ chức OASIS (Organization for the Advancement of Structured Information Standards) UDDI đƣợc xâydựng nhằm mục đích cung cấp khả cho phép cơng bố, tổng hợp tìm kiếm dịch vụ web UDDI đƣa tập hợp hàm API đƣợc chia làm phần: Inquiry API, dùng để tìm kiếm truy xuất dịch vụ web đăng ký Publisher’s API, dùng để công bố dịch vụ web muốn đăng ký Thông tin tổ chức UDDI đƣợc chia làm phần: - White pages: liệt kê thông tin nhà cung cấp dịch vụ web, bao gồm địa chỉ, thông tin liên lạc định danh - Yellow pages: phân loại dịch vụ theo tổ chức hay nhóm dịch vụ địa điểm đặt dịch vụ - Green pages: cung cấp thông tin dịch vụ web, cách thức truy cập nhƣ tƣơng tác với dịch vụ web 1.3 XML-PRC XML nhƣ nêu phần 1.2.1 đƣợc viết tắt cụm từ Extensible Markup Language – Ngôn ngữ đánh dấu liệu RPC – đƣợc viết tắt 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 giao diện mà đƣợc gọi từ xa thông qua môi trƣờng mạng máy tính Giao diện hàm đơn giản nhƣng thƣ viện API khổng lồ XML – RPC có đặc điểm sau: 14 - XML – RPC hƣớng tiếp cận dễ rõ ràng cho Web Service, cung cấp phƣơng thức gọi ứngdụng từ máy tính local đến máy tính từ xa thơng qua môi trƣờng mạng - XML – RPC cho phép chƣơng trình có khả tạo hàm thủ tục gọi hàm thơng qua mạng máy tính - XML – RPC sử dụng giao thức HTTP để vận chuyển thông tin từ Client đến Server - XML – RPC sử dụng ngôn ngữ XML để mô tả thông điệp yêu cầu thông điệp đáp ứng gần gũi với ngôn ngữ tự nhiên - XML – RPC phía khách cụ thể thơng tin tên thủ tục, tham biến thông điệp XML yêu cầu, máy chủ trả lỗi trả thông điệp XML trả lời - Các tham số XML-RPC đơn giản kiểu liệu nội dung – nhiên cấu trúc liệu phức tạp nhƣ struct, array đƣợc hỗ trợ XML – RPC Sử dụng HTTP có nghĩa yêu cầu XML-RPC phải đƣợc đồng phi trạng thái, u cầu XML-RPC ln ln có trả lời XML-RPC tƣơng ứng, yêu cầu trả lời phải xảy kết nối HTTP Phi trạng thái (stateless) có nghĩa yêu cầu HTTP hoàn thành cách riêng biệt Khi máy khách tạo yêu cầu HTTP tất thơng tin u cầu phải đƣợc đệ trình lên máy chủ Dịch vụ thƣờng không dựa vào thông tin yêu cầu trƣớc Thông điệp XML yêu cầu XML trả lời hai thơng điệp hồn tồn riêng biệt Điều nhiều tránh đƣợc chi phí lớn liên quan đến việc bảo trì hệthống XML-RPC khơng cung cấp hỗ trợ trì trạng thái, nhƣng với hệthống hữu trạng thái XML-RPC thực hỗ trợ trì trạng thái Với điểm cơng nghệ liên quan đến XML-RPC nhƣ XMLRPC có nhƣợc điểm nhƣ sau: - Một yêu cầu XML-RPC bao gồm hành động để thực tham số hành động yêu cầu gửi lên HTTP mà HTTP sẵn sàng đáp ứng yêu cầu trả lời yêu cầu - Một API XML-RPC cần phải định nghĩa mã lỗi riêng nó, dễ dàng sử dụng trạng thái mã lỗi - Với kiểu API sử dụng XML-RPC chức xác thực cache bên phía máy khách khơng thể thực đƣợc hệthống 15 Một giải pháp thay XML-RPC để khắc phục nhƣợc điểm XML-RPC dịch vụ RESTful Chúng ta tìm hiểu dịch vụ chi tiết chƣơng để hiểu REST đƣợc thay XML-RPC nhƣ 1.4 REST REST (Representational State Transfer) kiểu kiến trúc lần giới thiệu vào năm 2000 Roy Fielding [6] luận án ông “Architectural Styles and the Design of Network-based Software Architectures” (Phong cách kiến trúc thiết kế kiến trúc phần mềm dựa mạng) Đại học California Mục đích REST thiết kế ứngdụng mạng phân tán sử dụng HTTP nhƣ giao thức tầng ứngdụng mơ hình kiến trúc thực cho web 1.5 Nguyên tắc REST Sự phát triển ngày lớn dịch vụ web dẫn tới hệ tất yếu RESTful đƣợc đƣa nhƣ giải pháp để thay việc thực triệu gọi từ xa (RPC) thông qua web REST kiểu kiến trúc cho hệthống phân tán nhƣ World Wide Web REST đƣợc sử dụng nhiều việc phát triển ứngdụng Web sử dụng giao thức HTTP giao tiếp thông qua mạng internet Các ứngdụng sử dụng kiến trúc REST đƣợc gọi ứngdụng phát triển theo kiểu RESTful [6] Kiến trúc REST phải dựa vào nguyên tắc nhƣ mô tả tài liệu [7,12,13], Tài nguyên (Resources), Khả đánh địa (Addressability), Phi trạng thái (Statelessness), Kết nối (Connectedness), Giao diện đồng (Uniform Interface) khả lƣu cache (Cacheability) 1.5.1 1.5.2 Tài nguyên REST tập trung vào việc xử lý tài nguyên Tài nguyên thứ nhƣ khách hàng, video, tranh ảnh, trang web… Tài nguyên đối tƣợng vật lý khái niệm trừu tƣợng Các tài nguyên giúp ta định nghĩa đƣợc dịch vụ hệ thống, kiểu thơng tin mà trả về, hành vi xử lý thơng tin Mỗi tài nguyên đƣợc định danh ID URI Nếu thơng tin khơng có URI khơng phải tài ngun không tồn mạng Hai tài nguyên có chung URI (Hình 1.5) nhƣng hai URI trỏ vào tài nguyên vào thời điểm (Hình 1.6) Ví dụ có URI xác định http://domain/last-version , last-version phiên 2.0 hai URI trỏ vào tài nguyên Sau thời gian last-version lên phiên 3.0 lúc hai URI trỏ vào hai tài nguyên khác 16 Hình 1.5 Hai tài nguyên URI Hình 1.5 Hai URI trỏ đến tài nguyên 1.5.3 Khả đánh địa Mọi tài nguyên đƣợc đánh địa Mỗi tài nguyên đƣợc đánh địa có nghĩa tài nguyên có URI Với khả đánh địa lƣu lại thơng tin cần thiết, gửi URI tới ngƣời khác nhƣ tài nguyên, đặc biệt khả lƣu cache, tài nguyên đƣợc lƣu máy khác, sau lần truy cập tài nguyên đƣợc truy cập máy khách Chúng ta xem xét qua ứngdụng Google Maps, vào ứng Google Maps (http://www.google.com/maps) gõ “Xuân Thủy, Cầu Giấy, Hà Nội” hệthống Google Maps hiển thị địa liên quan tới từ khóa ta vừa gõ, ta thấy URI site http:://www.google.com/maps thay đổi thành (https://www.google.com/maps/place/Xu%C3%A2n+Th%E1%BB%A7y,+C%E1% BA%A7u+Gi%E1%BA%A5y,+H%C3%A0+N%E1%BB%99i,+Vi%E1%BB%87t +Nam/@21.0365314,105.7834382,17z/data=!3m1!4b1!4m2!3m1!1s0x3135ab358396c 7a7:0x8c0029a430be510) có nghĩa Google Maps đánh địa cho kết tìm kiếm “Xuân Thủy, Cầu Giấy, Hà Nội” Nếu muốn gửi thông tin đồ cho ngƣời khác cần gửi URI họ xem đƣợc đồ mà xem 17 Hình 1.6 Minh họa tìm kiếm đồ Google Maps 1.5.4 Phi trạng thái Mọi yêu cầu HTTP hoàn thành cách riêng biệt Có nghĩa u cầu hồn chỉnh, độc lập khơng đòi hỏi máy chủ phải thu thập đƣợc ngữ cảnh trạng thái ứngdụng lúc xử lý yêu cầu Nếu máy chủ yêu cầu liệu u cầu trƣớc máy khách phải gửi lại thơng tin xem nhƣ yêu cầu mới, máy chủ khơng giữ thơng tin máy khách Điều làm cho hệthống đáng tin cậy hơn, đơn giản khả mở rộng lớn Khi máy khách gửi yêu cầu đến máy chủ A nhƣng vào thời điểm máy chủ A lỗi máy chủ khác đƣợc thay để xử lý yêu cầu mà máy khách gửi Điều có nghĩa máy chủ web đƣợc thay cách dễ dàng làm cho hệthống có khả thay đổi Đặc biệt hệthống có cân tải máy chủ phục vụ tốt ngƣời dùng mà yêu cầu trƣớc Với cân tải hệthống trở nên đơn giản để thực 1.5.5 Kết nối Dịch vụ kiểu REST cho phép máy khách chuyển từ trạng thái đến trạng thái khác cách gửi liên kết đại diện với nhau, đại diện siêu âm thanh, tài liệu mà khơng chứa liệu mà có DANH MỤC TÀI LIỆU THAM KHẢO [1] Topup - http://fsl.fmrib.ox.ac.uk/fsl/fslwiki/TOPUP 18 [2] R Fielding et al (1999) Hypertext Transfer Protocol – HTTP/1.1 IETF RFC 2616 [3] T Berners-Lee et al (1996) Hypertext Transfer Protocol – HTTP/1.0 IETF RFC 1945 [4] R Fielding et al (1997) Hypertext Transfer Protocol – HTTP/1.1 IETF RFC 2068 [5] R Fielding, editor (2006) RFC for REST REST Discussion Mailing List [6] R Fielding (2000) Architectural Styles and The Design of Network-based Software Architectures PhD thesis, University of California, Irvine [7] L Richardson, S Ruby, et al (2007) Restful Web Services O‟Reilly, 1st edition [8] World wide web consortium (2004) http://www.w3.org/ W3C [9] Laravel Framework http://laravel.com/ [10] M Gudgin et al (2007) SOAP Version 1.2 Part 1: Messaging Framework (Second Edition) W3C Recommendation W3C [11] E Christensen et al (2001) Web Services Description Language (WSDL) 1.1 W3C Note W3C [12] C Pautasso, O Zimmermann, and F Leymann (2008) RESTful Web Services vs "Big" Web Services: Making the Right Architectural Decision IW3C2 [13] Restful webservices (2008) http://www.slideshare.net/gouthamrv/restfulservices-2477903 [14] P James Http caching (2006) http://www.peej.co.uk/articles/httpcaching.html [15] Nadia Mohedano Troyano (2010) The Design of a RESTful Web Service PhD thesis, kungliga tekniska hÖgskolan school of electrical engineering tnssm 19 ... tài - Nghiên cứu giải pháp xây dựng API, so sánh đƣa ƣu nhƣợc điểm giải pháp qua đƣa giải pháp phù hợp để xây dựng API - Áp dụng kết nghiên cứu để xây dựng, cài đặt thử nghiệm hệ thống API TopUp. .. sử dụng dịch vụ riêng biệt để tƣơng tác với hệ thống cung cấp dịch vụ nói Một hệ thống nhƣ đƣợc gọi API Để giải vấn đề tác giả đề xuất luận văn Nghiên cứu RESTful API ứng dụng xây dựng hệ thống. .. vụ RESTful Chương 4: Xây dựng phát triển API TOPUP Chƣơng giới thiệu chi tiết hệ thống TOPUP, nguyên tắc hoạt động hệ thống nhƣ mục tiêu mà hệ thống cần đạt đƣợc, áp dụng nguyên tắc REST sử dụng