Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 88 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
88
Dung lượng
0,96 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ÊN CỨU RESTFUL API VÀ ỨNG DỤNG XÂY DỰNG HỆ THỐNG TOPUP LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN HÀ NỘI - 2016 ĐẠI HỌC QUỐC GIA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN NGUYỄN TRỌNG PHỔ NGHIÊN CỨU RESTFUL API VÀ ỨNG DỤNG XÂY DỰNG HỆ THỐNG TOPUP Ngành: Công nghệ thông tin Chuyên ngành: Quản lý hệ thống thô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 LỜI CAM ĐOAN Tơi xin cam đoan Luận văn cơng trình nghiên cứu cá nhân Các liệu, kết nêu Luận văn xây dựng dựa sở nghiên cứu lý thuyết, khảo sát tình hình thực tiễn, hướng dẫn thầy cô giáo, đóng góp anh chị khóa Tơi xin cam đoan điều tơi nói thật, sai sót tơi xin chịu hoàn toàn trách nhiệm trước Hội đồng T c giả u n v n Nguyễn Trọng Phổ i LỜI CẢM ƠN Để hoàn thành tốt Luận văn tốt nghiệp với đề tài “Nghiên cứu RESTful API ứng dụng xây dựng hệ thống TOPUP” nỗ lực, cố gắng thân tôi, thiếu giúp đỡ, hướng dẫn thầy cô Qua đây, xin gửi lời cảm ơn chân thành đến Thầy giáo PGS.TS Nguyễn Đình Hóa tận tình hướng dẫn, giúp đỡ tơi có định hướng hồn thành tốt đề tài nghiên cứu Tơi xin gửi lời cảm ơn tới gia đình bạn bè quan tâm, động viên, giúp đỡ tạo điều kiện cho tơi để tơi có điều kiện tốt trình thực đề tài Mặc dù có nhiều cố gắng hạn chế thời gian kiến thức, trình độ cá nhân nên đề tài nghiên cứu tránh khỏi thiếu sót Vì vậy, tơi mong nhận góp ý, bảo thầy giáo để đề tài nghiên cứu đầy đủ, hồn thiện ứng dụng vào thực tế hiệu Tôi xin chân thành cảm ơn! T c giả u n v n Nguyễn Trọng Phổ ii MỤC LỤC PHẦN MỞ ĐẦU CHƢƠNG 1: DỊCH VỤ WEB VÀ REST 1.1Tổng quan dịch vụ web 1.2Kiến trúc c c thành phần dịch vụ web 1.2.1XML 1.2.2SOAP 1.2.3WSDL 1.2.4UDDI 1.3XML-PRC 1.4REST 1.5Nguyên tắc REST 1.5.1Tài nguyên 1.5.2Khả đánh địa c 1.5.3Phi trạng thái 1.5.4Kết nối 1.5.5Giao diện đồng 1.5.6Khả lưu cache 1.6Tại ựa chọn REST 1.7Dịch vụ web kiểu REST CHƢƠNG 2: BẢO MẬT VỚI DỊCH VỤ WEB KIỂU REST 2.1Giới thiệu 2.2Kiểu kiến trúc REST phù hợp với đệm web 2.3Khóa mã nội dung đối xứng 2.4Bàn giải ph p 2.5Kết u n 2.5.1Bảo mật với JSON W 2.5.2Bảo mật với OAuth2 2.5.3Lựa chọn giải pháp CHƢƠNG 3: KHUNG LÀM VIỆC LARAVEL 3.1Giới thiệu 3.2Lịch sử ph t triển Larave 3.3Cấu trúc Larave 3.3.1Route 3.3.2Controller 3.3.3Eloquent ORM 3.4 Bảo m t với Larave 34 3.4.1 Giả mạo yêu cầu (Cross-site Request Forgery - CSRF) 35 3.4.2 Kịch lệnh ( Cross-site Scripting (XSS) 35 3.4.3 Nhúng câu lệnh SQL ( SQL Injection) 35 3.4.4 Phép gán ạt (Mass Assignment) 36 3.4.5 Cookies 36 3.4.6 HTTPS 37 CHƢƠNG 4: THIẾT KẾ VÀ THỰC HIỆN HỆ THỐNG API TOPUP .38 4.1 Giới thiệu hệ thống TOPUP 38 4.2 Nguyên tắc hoạt động 39 4.3 Tổng quan hệ thống VTA TOPUP API 39 4.3.1 Tổng quan APIs 39 4.3.2 Kết nối 39 4.3.3 Luồng hoạt động TOPUP 40 4.3.4 Giao thức TCP/IP 41 4.3.5 Giao thức HTTP 41 4.3.6 Bảo mật xác thực 42 4.4 Áp dụng kiến trúc REST 44 4.4.1 Tài nguyên 44 4.4.2 Đánh địa 46 4.4.3 Phi trạng thái 46 4.4.4 Liên kết với 47 4.4.5 Giao diện đồng 47 4.4.6 Khả cache 48 4.5 Thiết kế chi tiết c c API 49 4.5.1 Phương thức “Ping” 49 4.5.2 Phương thức “Check Wallet” 50 4.5.3 Phương thức “Service Info” 52 4.5.4 Phương thức “Topup” 55 4.5.5 Phương thức “Trans History” 58 4.5.6 Danh sách mã lỗi 60 4.6 Thử nghiệm đ nh gi kết 61 4.6.1 Giới thiệu 61 4.6.2 Một số đoạn code mô tả thực thi API 62 4.6.3 Dùng thử API 62 DANH MỤC TÀI LIỆU THAM KHẢO 67 iv STT Từ viết tắt 10 11 12 13 14 15 16 17 18 19 20 v 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 Hình 1.2 Mơ tả cấu trúc thông điệp SOAP Hình 1.3 Cấu trúc WSDL Hình 1.4 Các thành phần WSDL Hình 1.5 Hai URI trỏ đến tài nguyên 10 Hình 1.6 Minh họa tìm kiếm đồ Google Maps 11 Hình 1.7 Minh họa đại diện liên kết 12 Hình 2.1 Sơ đồ luồng hoạt động Oauth2 23 Hình 3.1 Tỷ lệ đánh giá khung làm việc PHP 25 Hình 3.2 Ánh xạ route action 32 Hình 4.1 Sơ đồ tổng quan hệ thống VTA Topup 38 Hình 4.2 Kết nối dịch vụ VTA Topup 40 Hình 4.3 Luồng hoạt động hệ thống VTA Topup 41 Hình 4.4 Lược đồ API Ping 50 Hình 4.5 Lược đồ check wallet 52 Hình 4.6 Lược đồ lấy thông tin dịch vụ 55 Hình 4.7 Lược đồ hành động TOPUP 58 Hình 4.8 Lược đồ hành động lấy lịch sử giao dịch 60 Hình 4.9 Lấy thơng tin truyền vào Header 62 Hình 4.10 Phương thức xác thực tạo chữ ký 62 Hình 4.11 Hình ảnh tạo mảng request_header 63 Hình 4.12 Hình ảnh mơ tả việc gọi api ping 63 Hình 4.13 Hình ảnh giao diện dùng thử API Ping 63 Hình 4.14 Hình ảnh giao diện dùng thử API Check Wallet 64 Hình 4.15 Hình ảnh giao diện dùng thử API Service Info 64 Hình 4.16 Hình ảnh giao diện dùng thử API Topup 65 Hình 4.17 Hình ảnh giao diện dùng thử API Trans History 65 vi 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ụng hệ 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 đáp ứng Một số phần mềm địi hỏi lượng thơng tin lớn, liệu lớn… lưu liệu thiết bị sử dụng, số loại yêu cầu cập nhật realtime (theo thời gian thực) để đảm bảo đắn thơng tin (chứng khốn, tiền tệ ), số phần mềm đòi hỏi xử lý nhanh mạnh, mà thiết bị lại thự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ây dựng ứng dụng có tính dịch vụ 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 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 TOPUP” nhằm nghiên cứu xây dựng hệ thống API 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 nguyên tắc REST - Hiểu loại liệu điều khiển Tiến hành cài đặt API RESTful theo phương pháp hệ thống dựa web - Đưa phương pháp xây dựng cách thức truy cập liệu sử dụng API REST - Tiến hành cài đặt API RESTful 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ê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 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ên cứ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ây dựng API số Website nước - Kết hợp nghiên cứu có trước tác giả nước với bảo, góp ý thầy hướng dẫn để hồn thành nội dung nghiên cứu Phạm vi nghiên cứu - Nghiên cứu số giải pháp xây dựng API - 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 ứng dụng chủ yếu mang tính thử nghiệm C c kết nghiên dự kiến cần đạt đƣợc - Nghiên cứu số giải pháp xây dự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 u n v n Phần nội dung luận văn 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 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 cách thực áp dụng vào hệ thống 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â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 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 ứng dụng vào hệ thống TOPUP, lược đồ thiết kế chương để ta thấy RESTfull API phân biệt môđun khác tương tác 57 Hình 4.7 Lược đồ hành động TOPUP 4.5.5 Phương thức “Trans History” Đây phương thức truy vấn lịch sử giao dịch Topup Hình 4.7 luồng người dùng cần tra cứu lịch sử giao dịch hệ thống Để thực hành động máy khách gửi yêu cầu HTTP GET tới URI /trans-history/{ vta_transaction_id } với {vta_trasaction_id} mã giao dịch xác định lịch sử giao dịch cần lấy Yêu cầu hệ thống VTA tiếp nhận, mô đun xác thực phân tích URI tham số header để xác thực người dùng nêu phần 4.3.6 Trong trường hợp người dùng xác thực hệ thống kiểm tra hợp lệ biến đầu vào Nếu biến đầu vào thỏa mãn tất yêu cầu hệ thống hệ thống yêu cầu thông tin từ CSDL giao dịch theo mã giao dịch mà khách hàng gửi đến Và cuối hệ thống tạo kết HTTP gửi lại cho người dùng Định dạng request URI: GET http://vta-address:vta-port/trans-history/{ vta_transaction_id } Định dạng response Trƣờng Code Message client_transaction_id vta_transaction_id history_code history_message source_currency source_amount fee_amount transmitted_amount destination_currency destination_amount trans_time Ví dụ: Request: URI: GET http://vta-address:vta-port/trans-history/234 Response: { "code":"0", "message":"Successful Request", "client_transaction_id":"131313", "vta_transaction_id":"234", "history_code":"0", "history_message":"Transaction Successful", "source_currency":"USD", "source_amount":"5", "fee_amount":"1.05", "transmitted_amount":3.95, "destination_currency":"HTG", "destination_amount":"172", "trans_time":"2014-01-15 00:23:14" } 59 Hình 4.8 Lược đồ hành động lấy lịch sử giao dịch 4.5.6 Danh sách mã lỗi Đây danh sách đầy đủ mã lỗi trả hệ thống VTA Topup: Code Tin nhắn 10 11 12 Transaction Successful Request Request is wrong form enough field Client-ID not blocked Client IP address is ma or not allowed 13 Invalid Format Timesta 14 Invalid Request Timest 15 Duplicate Request Tim 16 Can't verify signature 17 Request denied Please support 40 Invalid input data 41 Invalid service class value 42 Invalid service object value 43 Your account is not allowed use this service 49 Invalid action value 51 Duplicate client_transaction 52 56 66 Invalid format or Out of ran topup amount Transaction ID not found The malformed or not exist 67 The recipient number is a p paid refused 68 Transaction Incomplete 69 Request Timeout 80 98 99 Your Can not perform topup actio System not available Please again later Unexpected contact support 4.6 Thử nghiệm đ nh gi 4.6.1 Giới thiệu Các khái niệm kỹ thuật REST trừu tượng mặt lý thuyết, để hiểu rõ REST tác giả xây dựng ứng dụng mô API nêu luận văn Ứng dụng xây dựng dựa framework Laravel Máy chủ web dùng để chạy ứng dụng Xampp Xampp chương trình tạo máy chủ Web tích hợp sẵn Apache, PHP, MySQL, FTP Server, Mail Server công cụ 61 phpMyAdmin Xampp có chương trình quản lý tiện lợi, cho phép chủ động bật tắt khởi động lại dịch vụ máy chủ lúc 4.6.2 Một số đoạn code mô tả thực thi API Lấy thông tin từ Header Hình 4.9 đoạn code lấy thơng tin xác thực từ Header API Các thông tin truyền vào Header gồm: client_id, timestamp, signature dùng xác thực bảo mật API Hình 4.9 Lấy thông tin truyền vào Header Hàm x c thực tạo chữ ký Hình 4.10 đoạn code phương thức xác thực tạo chữ ký Chữ ký tạo áp dụng JSON Web Token Khóa cơng khai tạo từ client_id, timestamp biến truyền vào API, khóa riêng mã bí mật tạo lúc tạo client_id Việc so sánh chữ ký truyền vào HTTP Header chữ ký tạo API xác định thơng tin truyền vào có đáng tin cậy hay khơng Hình 4.10 Phương thức xác thực tạo chữ ký 4.6.3 Dùng thử API Để kiểm tra trực tiếp API tạo tác giả xây dựng ứng dụng mô việc sử dụng API 62 Một số đoạn code mơ tả dùng thử API Hình ảnh 4.11 mô tả việc tạo mảng request_header Mảng truyền vào HTTP Header lúc gọi API Hình 4.11 Hình ảnh tạo mảng request_header Hình 4.12 mơ tả việc gọi API Ping cách sử dụng hàm CURL Hình 4.12 Hình ảnh mơ tả việc gọi api ping Dùng thử API Ping Hình 4.13 Hình ảnh giao diện dùng thử API Ping 63 Hình 4.14 Hình ảnh giao diện dùng thử API Check Wallet Hình 4.15 Hình ảnh giao diện dùng thử API Service Info 64 Hình 4.16 Hình ảnh giao diện dùng thử API Topup Hình 4.17 Hình ảnh giao diện dùng thử API Trans History 65 KẾT LUẬN Kết u n Hầu hết web API ngày truy cập từ nơi đâu giới thông qua web Trong dự án này, dịch vụ web kiểu REST thực thi dùng thiết kế RESTful API, kết nhận thật thỏa đáng Do nói hệ thống API có nhiều yêu cầu phức tạp nhiên dễ dàng thực với REST Cùng với tham gia hai thành viên Nguyễn Vũ Hà Hồng Việt Long, chúng tơi xây dựng thành công hệ thống API TOPUP Thành viên Nguyễn Vũ Hà có vai trị xây dựng phần bảo mật xác thực cho hệ thống API Thành viên Hoàng Việt Long có vai trị xây dựng Test Case cho hệ thống API Và tác giả chịu trách nhiệm xây dựng API với kiến trúc REST phối hợp với hai thành viên lại để kiểm tra lỗi hệ thống khắc phục lỗi phát sinh trình xây dựng Qua trình tìm hiểu thiết kế REST API, tác giả nói kiểu kiến trúc REST giải pháp thích hợp hệ thống API REST thay XML-PRC API GUI API với REST API chung mà điều khiển dịch vụ REST API kiểm chứng máy tính người sử dụng REST mà liệu trả theo nhiều kiểu đại diện khác Hơn với API chung thực rõ ràng hơn, rành mạch sử dụng lại API cho hệ thống web khác REST chung thực REST chứng tỏ tìm hiểu khái niệm REST nhiệm vụ thiết kế API theo ngun tắc khơng q phức tạp ban đầu tiếp xúc REST - Những nhiệm vụ đề tài hoàn thành: + Tìm hiểu ứng dụng REST + Tìm hiểu khung làm việc Laravel + Xây dựng thử nghiệm hệ thống Topup sử dụng API theo nguyên tắc REST - Hạn chế: + Hiện hệ thống Topup đáp ứng kết nối kênh toán / topup trực tiếp người dùng Hƣớng ph t triển - Xây dựng Wholesale WS Gateway đáp ứng kết nối kênh toán/ topup đối tác bán buôn cước viễn thông 66 DANH MỤC TÀI LIỆU THAM KHẢO [1] Topup - http://fsl.fmrib.ox.ac.uk/fsl/fslwiki/TOPUP [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 Restful webservices (2008) http://www.slideshare.net/gouthamrv/restfulservices-2477903 [14] P James Http caching (2006) http://www.peej.co.uk/articles/http-caching.html [13] [15] Nadia Mohedano Troyano (2010) The Design of a RESTful Web Service PhD thesis, kungliga tekniska hÖgskolan school of electrical engineering tnssm 67 ... với hệ thống cung cấp dịch vụ nói Một hệ thống 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 TOPUP? ?? nhằm nghiên cứu xây dựng hệ thống API. .. 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. .. QUỐC GIA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN NGUYỄN TRỌNG PHỔ NGHIÊN CỨU RESTFUL API VÀ ỨNG DỤNG XÂY DỰNG HỆ THỐNG TOPUP Ngành: Công nghệ thông tin Chuyên ngành: Quản lý hệ thống thông tin Mã số: Chuyên