Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
0,9 MB
Nội dung
HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA CÔNG NGHỆ THÔNG TIN - - TÌM HIỂU VỀ RESTFUL VÀ DỊCH VỤ WEB TRONG PHP Giảng viên hướng dẫn: Phạm Văn Hưởng Sinh viên thực hiện: Hoàng Hiển Vinh Đặng Đức Anh Tuấn Nguyễn Văn Thảo Hà Nội, tháng năm 2016 HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA CÔNG NGHỆ THÔNG TIN ĐỀ TÀI THỰC TẬP CƠ SỞ TÌM HIỂU VỀ RESTFUL VÀ DỊCH VỤ WEB TRONG PHP Nhận xét giảng viên hướng dẫn: Điểm chuyên cần: Điểm báo cáo: Xác nhận của giảng viên hướng dẫn Lời mở đầu Ngày với phát triển mạnh mẽ môi trường Internet, ứng dụng triển khai Web ngày phát triển rộng rãi phong phú Trong kinh tế thị trường nay, chuyển đổi liệu, thông tin nhu cầu thiết yếu cho phát triển tồn doanh nghiệp Web Service coi công nghệ mang đến cách mạng cách thức hoạt động dịch vụ B2B (Business to Business) B2C (Business to Customer) Giá trị Web Service dựa việc cung cấp phương thức theo chuẩn việc truy nhập hệ thống đóng gói hệ thống kế thừa Web Service đời mở hướng cho việc phát triển ứng dụng Internet giải vấn đề chuyển đổi liệu quy trình thương mại doanh nghiệp Web Service kết hợp sử dụng nhiều công nghệ khác cho phép ứng dụng viết ngôn ngữ khác nhau, chạy tảng khác có chuyển đổi liệu thông qua môi trường mạng Internet Các công nghệ mà web Service sử dụng XML, SOAP,WSDL,UDDI Mục lục 1.1 Mô hình hướng dịch vụ SOA .5 1.1.1 Định nghĩa: 1.2 Công nghệ Web service 1.2.1 Web Service gì? 1.3.1 SOAP – Simple Object Access Protocol 10 1.3.2 WSDL – Web Service Description Language .12 1.3.3 Universal Description, Discovery, and Integration (UDDI) 13 1.4 Công nghệ cải tiến RESTfull .14 Chương 2: RESTfull JSON 17 2.2 RESTful ? 17 Phi trạng thái 22 Ứng dụng máy khách 25 Đưa cấu trúc thư mục giống URIs 26 Chuyển đổi XML, JSON, hai 28 Chương 3: Phát triển Web dựa RESTful PHP 31 3.1 Mô hình 31 3.2 Tạo web service với PHP MySQL 31 Chương 4: Thực Nghiệm 35 Chương 1: Tổng quan Web Services 1.1 Mô hình hướng dịch vụ SOA 1.1.1 Định nghĩa: Mô hình hướng dịch vụ (Service Oriented Architechture – gọi tắt mô hình SOA) khái niệm kiến trúc hệ thống nhằm đem lại cách thuận tiện chức nghiệp vụ, quy trình ứng dụng, tới người sử dụng dạng dịch vụ hoạt động môi trường mạng có khả chia sẻ sử dụng lạị Dịch vụ hiểu mô-đun nghiệp vụ chức ứng dụng với giao diện thiết kế theo quy định tương tác cách gửi nhận thông điệp Hình vẽ khái quát hóa mô hình SOA Khái quát mô hình hướng dịch vụ SOA Về mối liên hệ với kiến trúc tổng thể EA: Trong kiến trúc tổng thể (Enterprise Architecture – EA) phương pháp luận nhằm xác định, xếp điều chỉnh quy trình nghiệp vụ cho phù hợp với tầm nhìn, chiến lược mục tiêu quan, tổ chức, mô hình SOA chủ yếu sử dụng thiết kế phát triển hệ thống thông tin phục vụ cho quy trình nghiệp vụ nhận biết (trong kiến trúc tổng thể) Có thể liệt kê số lợi ích việc sử dụng mô hình SOA sau: - Cho phép hướng tập trung vào xây dựng tính nghiệp vụ trình phát triển phần mềm; - Giảm thiểu chi phí trình phát triển; - Giảm thiểu yêu cầu đào tạo kỹ năng; - Chi phí bảo trì thấp; - Chu trình phát triển phần mềm nhanh chóng Mô hình SOA có ưu mô hình truyền thống (như mô hình hướng ứng dụng mô hình hướng lập trình) điểm mô hình SOA chủ yếu tập trung nguồn lực phát triển vào chức tính phục vụ hoạt động quy trình nghiệp vụ Điều cho phép nhà quản lý cần dựa đặc điểm mang tính nghiệp vụ rà soát, xác định rõ chi tiết, thành phần cần thêm, sửa đổi loại bỏ Do đó, hệ thống phần mềm phát triển phía sau thiết kế nhằm đáp ứng quy trình nghiệp vụ (thay quy trình nghiệp vụ phải thay đổi để tận dụng tính phần mềm mô hình thường thấy nhiều quan tổ chức với hạ tầng ứng dụng Công nghệ thông tin phát triển từ trước) Bằng cách phát triển tập hợp danh mục dịch vụ, nhà phát triển có sưu tập mô-đun phần mềm có sẵn, sử dụng để lắp ghép nên hệ thống (thay phải xây dựng hệ thống từ đầu) Danh mục dịch vụ nhanh chóng gia tăng qui mô số lượng, khiến việc phát triển hệ thống ngày trở nên thuận tiện, nhanh chóng Khả sử dụng lại cho phép giảm bớt chi phí phát sinh thêm tính vào hệ thống 1.2 Công nghệ Web service 1.2.1 Web Service gì? Giới thiệu Web service Theo định nghĩa W3C (World Wide Web Consortium), Web service hệ thống phần mềm thiết kế để hỗ trợ khả tương tác ứng dụng máy tính khác thông qua mạng Internet, giao diện chung gắn kết mô tả XML Web service tài nguyên phần mềm xác định địa URL, thực chức đưa thông tin người dùng yêu cầu Một Web service tạo nên cách lấy chức đóng gói chúng cho ứng dụng khác dễ dàng nhìn thấy truy cập đến dịch vụ mà thực hiện, đồng thời yêu cầu thông tin từ Web service khác Nó bao gồm mô đun độc lập cho hoạt động khách hàng doanh nghiệp thân thực thi server Trước hết, nói ứng dụng Web service tích hợp hệ thống hoạt động phát triển hệ thống Trong hệ thống này, ứng dụng cần tích hợp với sở liệu (CSDL) ứng dụng khác, người sử dụng giao tiếp với CSDL để tiến hành phân tích lấy liệu Trong thời gian gần đây, việc phát triển mạnh mẽ thương mại điện tử B2B đòi hỏi hệ thống phải có khả tích hợp với CSDL đối tác kinh doanh (nghĩa tương tác với hệ thống bên – bên cạnh tương tác với thành phần bên hệ thống doanh nghiệp) Web service (Web Service) coi công nghệ mang đến cách mạng cách thức hoạt động dịch vụ B2B (Business to Business) B2C (Business to Customer) Giá trị Web service dựa việc cung cấp phương thức theo chuẩn việc truy nhập hệ thống đóng gói hệ thống kế thừa Các phần mềm viết ngôn ngữ lập trình khác chạy tảng khác sử dụng Web service để chuyển đổi liệu thông qua mạng Internet theo cách giao tiếp tương tự bên máy tính Tuy nhiên, công nghệ xây dựng Web service không thiết phải công nghệ mới, kết hợp với công nghệ có XML, SOAP, WSDL, UDDI… Với phát triển lớn mạnh Internet, Web service thật công nghệ đáng quan tâm để giảm chi phí độ phức tạp tích hợp phát triển hệ thống 1.2.2 Đặc điểm Web service a Đặc điểm - Web service cho phép client server tương tác với môi trường khác Ví dụ, đặt Web server cho ứng dụng máy chủ chạy hệ điều hành Linux người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng chạy xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích hai hệ điều hành - Phần lớn kĩ thuật Web service xây dựng dựa mã nguồn mở phát triển từ chuẩn công nhận, ví dụ XML - Một Web service bao gồm có nhiều mô-đun công bố lên mạng Internet - Là kết hợp việc phát triển theo hướng thành phần với lĩnh vực cụ thể sở hạ tầng Web, đưa lợi ích cho doanh nghiệp, khách hàng, nhà cung cấp khác cá nhân thông qua mạng Internet - Một ứng dụng triển khai hoạt động theo mô hình client-server Nó triển khai phần mềm ứng dụng phía server ví dụ PHP, Oracle Application server hay Microsoft.Net… - Ngày Web service phát triển, lĩnh vực sống áp dụng tích hợp Web service rộng lớn dịch vụ chọn lọc phân loại tin tức (hệ thống thư viện có kết nối đến web portal để tìm kiếm thông tin cần thiết); ứng dụng cho dịch vụ du lịch (cung cấp giá vé, thông tin địa điểm…), đại lý bán hàng qua mạng, thông tin thương mại giá cả, tỷ giá hối đoái, đấu giá qua mạng…hay dịch vụ giao dịch trực tuyến (cho B2B B2C) đặt vé máy bay, thông tin thuê xe… - Các ứng dụng có tích hợp Web service không xa lạ, đặc biệt điều kiện thương mại điện tử bùng nổ phát triển không ngừng với lớn mạnh Internet Bất kì lĩnh vực sống tích hợp với Web service, cách thức kinh doanh làm việc có hiệu thời đại ngày thời đại truyền thông trao đổi thông tin qua mạng Do vậy, việc phát triển tích hợp ứng dụng với Web service quan tâm phát triển điều hoàn toàn dễ hiểu b Ưu nhược điểm Ưu điểm: + Web service cung cấp khả hoạt động rộng lớn với ứng dụng phần mềm khác chạy tảng khác + Sử dụng giao thức chuẩn mở Giao thức định dạng liệu dựa văn (text), giúp lập trình viên dễ dàng hiểu + Nâng cao khả tái sử dụng + Thúc đẩy đầu tư hệ thống phần mềm tồn cách cho phép tiến trình/chức nghiệp vụ đóng gói giao diện Web service + Tạo mối quan hệ tương tác lẫn mềm dẻo thành phần hệ thống, dễ dàng cho việc phát triển ứng dụng phân tán + Thúc đẩy hệ thống tích hợp, giảm phức tạp hệ thống, hạ giá thành hoạt động, phát triển hệ thống nhanh tương tác hiệu với hệ thống doanh nghiệp khác Nhược điểm: + Những thiệt hại lớn xảy vào khoảng thời gian chết Web service, giao diện không thay đổi, lỗi máy khách không nâng cấp, thiếu giao thức cho việc vận hành + Có nhiều chuẩn cho Web service khiến người dùng khó nắm bắt + Phải quan tâm nhiều đến vấn đề an toàn bảo mật 1.3 Công nghệ truyền thống XML XML – eXtensible Markup Language Là chuẩn mở W3C đưa cho cách thức mô tả liệu, sử dụng để định nghĩa thành phần liệu trang web cho tài liệu B2B Về hình thức, XML hoàn toàn có cấu trúc thẻ giống ngôn ngữ HTML HTML định nghĩa thành phần hiển thị XML lại định nghĩa thành phần chứa Với XML, thẻ lập trình viên tự tạo trang web chọn định dạng thông điệp chuẩn tính phổ biến hiệu mã nguồn mở Do Web service kết hợp nhiều thành phần khác nên sử dụng tính đặc trưng thành phần để giao tiếp XML công cụ để giải vấn đề kiến trúc tảng cho việc xây dựng Web service, tất liệu chuyển sang định dạng thẻ XML Khi đó, thông tin mã hóa hoàn toàn phù hợp với thông tin theo chuẩn SOAP XML-RPC tương tác với thể thống 1.3.1 SOAP – Simple Object Access Protocol Chúng ta hiểu Web service vấn đề quan trọng Đó làm để truy xuất dịch vụ tìm thấy? Câu trả lời Web service truy xuất giao thức Simple Object Access Protocol – SOAP Nói cách khác truy xuất đến UDDI registry lệnh gọi hoàn toàn theo định dạng SOAP SOAP giao thức giao tiếp có cấu trúc XML Nó xem cấu trúc xương sống ứng dụng phân tán xây dựng từ nhiều ngôn ngữ hệ điều hành khác SOAP giao thức thay đổi thông điệp dựa XML qua mạng máy tính, thông thường sử dụng giao thức HTTP Một client gửi thông điệp yêu cầu tới server server gửi thông điệp trả lời tới client Cả SMTP HTTP giao thức lớp ứng dụng 10 Host: myserver Accept: application/xml Sử dụng GET theo cách rõ ràng GET dành cho truy cập liệu GET phương thức mà hiệu ứng phụ, đặc tính riêng không thay đổi giá trị Tương tự, thay đổi phương thức Web cần ứng dụng trường hợp thao tác cập nhật hỗ trợ qua HTTP GET, thể ví dụ Ví dụ Thực lệnh Cập nhật thông qua HTTP GET GET /updateuser?name=Robert&newname=Bob HTTP/1.1 Câu lệnh thay đổi thuộc tính (hoặc đặc tính) name liệu Có thể dùng chuỗi truy vấn (query) để dùng cho thao tác này, ví dụ ví dụ đơn giản, mẫu phương-pháp-dấu-hiệu-như-là-chuỗi-truy-vấn (query-string-as-method-signature) không hoạt động sử dụng thao tác phức tạp Do mục tiêu làm rõ việc sử dụng phương thức HTTP, nên cách tiếp cận RESTful gửi yêu cầu HTTP PUT để cập nhật tài nguyên, thay HTTP GET, cho lý tương tự (xem ví dụ 5) Ví dụ Lệnh HTTP PUT PUT /users/Robert HTTP/1.1 Host: myserver Content-Type: application/xml Bob 21 Sử dụng PUT để thay đổi liệu gốc, cho thấy cách làm rõ ràng hơn, phù hợp với nguyên lý REST khái niệm phương thức HTTP Lệnh PUT ví dụ rõ ràng chỗ liệu cập nhật cách xác định câu lệnh URI, chuyển đại diện thuộc tính liệu cần chuyển đổi nhóm không chặt chẽ tên tham số giá trị lệnh URI Ví dụ có hiệu ứng từ việc đổi tên tài nguyên từ Robert sang Bob, việc thay đổi URI sang /users/Bob Trong dịch vụ mạng REST, lệnh tài nguyên sử dụng URI cũ sinh lỗi 404 Not Found Như nguyên tắc thiết kế chung, giúp theo sát hướng dẫn sử dụng REST để sử dụng phương pháp HTTP cách rõ ràng cách sử dụng danh từ URIs thay động từ Trong Web service RESTful, động từ — POST, GET, PUT, DELETE — định nghĩa giao thức Và tốt nhất, để giữ giao diện khái quát hoá cho phép người dùng hiểu rõ thao tác mà họ gọi Web service không nên đưa nhiều động từ thủ tục remote từ xa, /adduser /updateuser Nguyên tắc thiết kế chung áp dụng phần thân câu lệnh HTTP, sử dụng có chủ ý để chuyển trạng thái tài nguyên, không mang tên phương thức hay thủ tục remote từ xa Phi trạng thái Các Web service REST cần điều chỉnh quy mô để đáp ứng yêu cầu ngày cao chất lượng thực Các khu vực lưu trữ máy chủ với khả cân tải vượt qua mát, ngăn (tường lửa) cổng xếp theo phương thức đặc thù nhằm tạo cấu trúc dịch vụ bền vững cho phép chuyển tiếp yêu cầu từ máy chủ tới máy chủ khác cần để giảm tổng thời gian phản hồi yêu cầu Web service Sử dụng máy chủ trung gian nhằm nâng cao mức yêu cầu dịch vụ mạng REST khách hàng để gửi yêu cầu hoàn chỉnh độc lập, có nghĩa gửi yêu cầu bao gồm tất liệu cần thiết để đáp ứng cho thành 22 phần máy chủ trung gian gửi tiếp đi, gửi theo tuyến cân tải mà không cần trạng thái kiểm soát bên yêu cầu Một yêu cầu hoàn chỉnh, độc lập không đòi hỏi máy chủ để thu thập ngữ cảnh trạng thái ứng dụng lúc xử lý yêu cầu Một ứng dụng (hoặc máy khách) Web service RESTchứa phần đầu phần thân trang HTTP yêu cầu tất tham số, ngữ cảnh liệu cần thiết thành phần bên máy chủ để đưa phản hồi Phi trạng thái theo nghĩa nâng cao tính hiệu dịch vụ Web, đơn giản hoá thiết kế thi hành thành phần máy chủ máy chủ trạng thái huỷ bỏ nhu cầu để đồng hoá mảng liệu với ứng dụng bên Hình minh hoạ dịch vụ trạng thái, từ ứng dụng yêu cầu trang sau tập hợp trang kết quả, giả sử dịch vụ theo sát ứng dụng dừng lại nơi điều chỉnh tập hợp Đối với thiết kế trạng thái, dịch vụ gia tăng lưu giữ previousPage (trang trước) thay đổi nơi để phản hồi lệnh Hình Thiết kế trạng thái Dịch vụ trạng thái trở nên phức tạp Trong môi trường Nền tảng Java, Phiên Doanh nghiệp (EE), dịch vụ trạng thái yêu cầu cẩn thận lúc ban đầu để lưu trữ hiệu cho phép đồng hoá liệu session (phiên làm việc) qua hệ thống container Java EE Trong môi trường này, có vấn đề quen thuộc chuyên viên phát triển servlet/JavaServer Pages (JSP) Enterprise JavaBeans (EJB), người thường gặp khó khăn tìm gốc rễ nguyên nhân java.io.NotSerializableException tái tạo session Liệu chuyển 23 thành phần chứa Servlet HttpSession tái tạo chuyển thành phần chứa EJB EJB trạng thái, vấn đề mà làm chuyên viên phát triển nhiều ngày để xác định mấu chốt đối tượng mà không thực thiSerializable, đồ thị phức tạp đối tượng mà đóng góp nên trạng thái máy chủ Ngoài ra, phần tối ưu hoá làm đội thêm chi phí ảnh hưởng đến hiệu máy chủ Mặt khác, thành phần máy chủ phi trạng thái phức tạp để thiết kế, viết phân bổ thông qua máy chủ cân tải Dịch vụ phi trạng thái không hoạt động tốt hơn, chuyển hầu hết vai trò trì trạng thái sang ứng dụng máy khách Trong dịch vụ mạng RESTful, máy chủ chịu trách nhiệm đưa phản hồi cung cấp giao diện cho phép máy khách trì trạng thái ứng dụng Ví dụ, yêu cầu tập hợp trang kết quả, máy khách gồm số trang thực tế truy xuất thay đơn giản yêu cầu (xem hình 2) Hình Thiết kế phi trạng thái Một dịch Web phi trạng thái sinh phản hồi liên kết với số trang tổng thể để máy khách làm mà cần để giữ giá trị mức định Khía cạnh thiết kế dịch vụ Web RESTful tách thành hai phần trách nhiệm mức phân chia cao mà rõ dịch vụ phi trạng thái trì 24 Máy chủ • Tạo phản hồi bao gồm đường dẫn tới nguồn tài nguyên cho phép ứng dụng điều hướng tài nguyên liên quan Loại phản hồi nhúng liên kết Tương tự, yêu cầu máy chủ kho tài nguyên, phản hồi RESTful Web service điển hình bao gồm đường dẫn đến máy tài nguyên phụ cho phản hồi trì kết nối • Tạo phản hồi mà xác định chúng lưu trữ để nâng cao hiệu cách giảm số lượng yêu cầu tài nguyên trùng cách loại trừ vài yêu cầu toàn Máy chủ làm cách gộp phản hồi phần đầu HTTP Last - Modified (lần sửa gần nhất) (giá trị ngày) Cache-Control (bộ điều khiển lưu trữ) Ứng dụng máy khách • Sử dụng phần đầu phản hồi Cache-Control (bộ điều khiển lưu trữ tạm) để xác định lưu trữ tài nguyên (lập vùng chép nội bộ) hay không Máy khách đọc phần đầu phản hồi Last-Modified (lần sửa gần nhất) gửi lại giá trị ngày vào phần đầu If-Modified-Since (nếu-sửa) để truy vấn máy chủ xem tài nguyên có thay đổi không Việc gọi truy vấn có điều kiện, hai phần đầu với phản hồi máy chủ mã 304 chuẩn (không sửa đổi) bỏ qua tài nguyên thực yêu cầu không thay đổi Mã phản hồi HTTP 304 có nghĩa máy khách sử dụng an toàn vùng lưu nội bộ, lưu giữ tài nguyên đại diện, hiệu cách vượt qua yêu cầu GET tài nguyên thay đổi • Gửi yêu cầu hoàn chỉnh đáp ứng độc lập yêu cầu khác Điều đòi hỏi máy khách sử dụng toàn phần đầu HTTP định giao diện dịch vụ mạng để gửi đại diện tài nguyên hoàn chỉnh phần 25 yêu cầu Máy khách gửi yêu cầu lập vài giả thuyết yêu cầu trước đó, tồn vùng máy chủ, khả máy chủ để thêm ngữ cảnh vào yêu cầu, trạng thái ứng dụng mà giữ yêu cầu Sự hợp tác ứng dụng máy khách máy chủ cần thiết để có phi trạng thái Web service RESful Nó nâng cao hiệu cách tiết kiệm băng thông tối thiểu hoá trạng thái ứng dụng phía máy chủ Đưa cấu trúc thư mục giống URIs Từ điểm có tài nguyên địa ứng dụng máy khách, đường dẫn xác định tính thực Web service REST nào, sử dụng theo cách chuyên viên thiết kế tham gia Tính thứ ba Web service RESful tất đường dẫn Các địa Web service REST nên có tính thực theo nghĩa chúng dễ dàng người dùng Có thể nghĩ địa đường dẫn giao diện tự đóng gói mà đòi hỏi lý giải tham chiếu, có, nhà phát triển để hiểu nhắm đến điểm phân phát tài nguyên liên quan Cuối cùng, cấu trúc địa nên rõ ràng, đoán dễ hiểu Một cách để đạt mức độ sử dụng xác định cấu trúc thư mục giống URIs Loại URI có thứ bậc, có điểm khởi nguồn đường dẫn đơn giản, có nhánh nhánh phụ thể vùng dịch vụ Theo định nghĩa này, URI không chuỗi bị cắt không giới hạn, mà với nhánh nhánh dọc nối với nút Ví dụ, thảo luận dịch vụ nhỏ thu thập chủ đề từ Java tới viết, bạn định nghĩa tập hợp cấu trúc URIs giống sau: http://www.myservice.org/discussion/topics/{topic} 26 Phần gốc, /discussion, có nút /topics bên Phía chuỗi tên chủ đề, chuyện xã hội, kỹ thuật, v.v , chủ đề mạch thảo luận Trong cấu trúc này, dễ dàng kéo mạch thảo luận cách gõ vài thứ sau /topics/ Trong vài trường hợp, đường dẫn tới tài nguyên cho mượn đặc biệt tốt với cấu trúc giống thư mục Ví dụ, tài nguyên cấu trúc ngày, điều mà phối hợp tốt để sử dụng cú pháp phân cấp Ví dụ trực quan dựa nguyên tắc: http://www.myservice.org/discussion/2008/12/10/{topic} Phần đầu tiên đường dẫn năm có bốn chữ số, phần thứ hai ngày có hai chữ số, phần thứ ba tháng có hai chữ số Có vẻ ngu ngốc giải thích theo cách này, mức độ đơn giản Con người máy móc dễ dàng sinh cấu trúc URIs giống chúng dựa nguyên tắc Bổ sung vào phần đường dẫn khe cú pháp làm cho chúng tốt có mẫu xác định từ để soạn chúng http://www.myservice.org/discussion/{year}/{day}/{month}/{topic} Một vài hướng dẫn bổ sung để lưu ý nói cấu trúc địa Web service RESTful là: • Giấu đuôi tài liệu mở rộng gốc máy chủ (.jsp, php, asp), có, bạn giấu số thứ mà không cần thay đổi địa Urls • Để thứ chữ thường • Thay khoảng trống gạch chân hoặc gạch nối (một hai loại) • Tránh chuỗi yêu cầu nhiều tốt 27 • Thay sử dụng mã (404 Not Found) yêu cầu địa cho phần đường dẫn, luôn cung cấp trang mặc định tài nguyên phản hồi Các địa URIs nên giữ nguyên để tài nguyên thay đổi tiến hành thay đổi dịch vụ, đường liên kết giữ nguyên Việc cho phép đánh dấu lại vị trí đọc Nó quan trọng mối liên quan tài nguyên mà mã hoá địa giữ nguyên độc lập với mối liên quan đại diện chúng lưu trữ Chuyển đổi XML, JSON, hai Một tài nguyên đại diện điển hình phản ánh trạng thái tài nguyên, thuộc tính nó, thời điểm ứng dụng máy khách yêu cầu Các đại diện tài nguyên theo nghĩa tóm tắt lúc Điều đơn giản đại diện ghi sở liệu, bao gồm tổng thể tên cột thẻ XML, nơi giá trị thành phần XML bao gồm giá trị dòng Hoặc hệ thống có mô hình liệu, theo định nghĩa tài nguyên đại diện tóm tắt thuộc tính thứ mô hình liệu hệ thống Đây điều bạn muốn Web services REST mang đến Những trở ngại cuối cùng, kèm với thiết kế Web service RESTful, phải làm với định dạng liệu mà ứng dụng trao đổi dịch vụ mức đáp ứng yêu cầu/phản hồi phần thân HTTP Đây điều làm để giữ thứ đơn giản, đọc kết nối Các chủ thể mô hình liệu bạn thường liên quan đến theo cách đó, mối liên hệ mô hình liệu chủ thể (tài nguyên) nên phản ánh theo cách chúng đại diện để chuyển đến ứng dụng máy khách Trong dịch vụ chuỗi thảo luận, ví dụ đại diện tài nguyên kết nối bao gồm chủ đề thảo luận 28 gốc thuộc tính nó, đường dẫn nhúng vào phản hồi định chủ đề Ví dụ Đại diện XML chuỗi thảo luận {comment} Cuối cùng, để đưa đến khả yêu cầu loại nội dung cụ thể cho ứng dụng máy khách mà phù hợp với chúng, cấu trúc dịch vụ bạn cho tận dụng phần đầu chấp nhận HTTP sẵn có bên trong, nơi giá trị phần đầu loại MIME Một vài loại MIME thông thường sử dụng dịch vụ RESTful thể Bảng Bảng Loại MIME phổ biến sử dụng dịch vụ RESTful MIME-Type Content-Type JSON application/json XML application/xml XHTML application/xhtml+xml 29 Nó cho phép dịch vụ nhiều khách hàng khác sử dụng, viết ngôn ngữ khác nhau, chạy thiết bị khác Sử dụng kiểu MIME phần đầu HTTP Accept chế biết nội dung thương thuyết, mà cho phép máy khách chọn định dạng liệu với chúng tối thiểu hoá nối lại dịch vụ ứng dụng mà sử dụng 30 Chương 3: Phát triển Web dựa RESTful PHP 3.1 Mô hình Web service tập phương thức gọi thực từ xa thông qua địa url Kết trả web service thường dạng json xml Web service thường sử dụng để tạo ứng dụng phân tán Kiến trúc webservice đơn giản 3.2 Tạo web service với PHP MySQL Bước : Tạo bảng users chứa thông tin thành viên ứng dụng web : username, password, name, email,… CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(100) NOT NULL, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Insert vài mẫu liệu vào bảng users để có liệu để test 31 Bước : Tạo thư mục tên webservice, đặt thư mục gốc website Tiếp đến thư mục webservice, tạo file đặt tên connection.php File có trách nhiệm tạo kết nối đến sở liệu $server_username = "root"; // điền username đăng nhập mysql $server_password = ""; // điền password đăng nhập mysql $server_host = "localhost";// điền tện host $database = restful; // tên database // tạo biến kết nối tới database $conn = mysqli_connect($server_host,$server_username,$server_password, $database) or die("không thể kết nối tới database"); Bước : Tạo file đặt tên api.php, File chịu trách nhiệm lấy thông tin gửi từ client, xử lý liệu trả dạng json XML Nội dung file sau : $user); } // trả liệu dạng json if ($format == 'json') { header('Content-type: application/json'); echo json_encode(array('users'=>$users)); 32 }else{ // trả liệu dạng xml header('Content-type: text/xml'); echo ''; foreach($users as $index => $user) { if(is_array($user)) { foreach($user as $key => $value) { echo ''; if(is_array($value)) { foreach($value as $tag => $val) { echo '',htmlentities($val),''; } } echo ''; } } } echo ''; } mysqli_close(); }else{ echo "Không có liệu trả về"; } Cách sử dụng • url lấy thông tin user trả dạng json http://localhost/webservice?getUser&format=json • user lấy thông tin user trả dạng xml http://localhost/webservice?getUser&format=xml 33 Với tham số truyền vào này, service thực thi việc truy vấn liệu db, trả liệu dạng json xml toàn thông tin user có db Chẳng hạn với json, liệu trả có định dạng sau : {"users":[{"user": {"id":"1",'username":"teo123","password":"123456",name :"Nguyen Van Teo","email":"teo123@gmail.com"}},{"user": {"id":"2",'username":"ti123","password":"123456",name :"Nguyen Van Ti","email":"ti123@gmail.com"}},{"user": {"id":"3",'username":"tam123","password":"123456",name :"Nguyen Van Tam","email":"tam123@gmail.com"}}} Còn xml liệu trả sau : 1 teo123 123456 Nguyen Van Teo teo123@gmail.com 2 ti123 123456 Nguyen Van Ti ti123@gmail.com 3 tam123 123456 Nguyen Van Tam tam123@gmail.com 34 Bước : Tùy thuộc vào mục đích sử dụng, liệu trả xử lý khác theo ý muốn người sử dụng Để lấy liệu từ service, ta dùng phương thức curl file_get_contents Tạo file client.php, đặt thư mục webservice Nội dung file đơn giản lấy liệu trả từ webservice thông qua url xử lý liệu theo mục đích Đoạn code client.php sau : //Lấy liệu trả dạng xml $du_lieu_tra_ve_xml = file_get_contents("http://localhost/webservice? getUser&format=xml"); //Lấy liệu trả dạng json $du_lieu_tra_ve_json = file_get_contents("http://localhost/webservice? getUser&format=json"); Tổng kết Từ ví dụ mục 3, ta hiểu đơn giản webservice dịch vụ, mà nhận yêu cầu thông qua url tham số, sau xử lý trả liệu định dạng xml json theo yêu cầu người dùng dịch vụ Xây dựng webservice có lợi định dạng json xml định dạng liệu sử dụng nhiều tảng di động (android, ios,…), website (php, jsp,…) Chương 4: Thực Nghiệm 35 [...]... yêu cầu, hoặc về các trạng thái ứng dụng mà được giữ giữa các yêu cầu Sự hợp tác này giữa ứng dụng máy khách và máy chủ là cần thiết để có một phi trạng thái trong một Web service RESful Nó nâng cao hiệu quả bằng cách tiết kiệm băng thông và tối thiểu hoá trạng thái ứng dụng về phía máy chủ Đưa ra cấu trúc thư mục giống URIs Từ điểm hiện có của tài nguyên địa chỉ ứng dụng máy khách, các đường dẫn xác... khi máy chủ không có trạng thái sẽ huỷ bỏ nhu cầu để đồng bộ hoá các mảng dữ liệu với một ứng dụng bên ngoài Hình 1 minh hoạ một dịch vụ trạng thái, từ đó một ứng dụng có thể yêu cầu trang sau trong một tập hợp các trang kết quả, giả sử rằng dịch vụ theo sát ứng dụng dừng lại ở nơi trong khi điều chỉnh tập hợp đó Đối với thiết kế trạng thái, dịch vụ gia tăng và lưu giữ một previousPage (trang trước)... sử dụng theo cách các chuyên viên thiết kế có thể tham gia Tính năng thứ ba của Web service RESful về tất cả đường dẫn Các địa chỉ Web service REST nên có tính hiện thực theo nghĩa rằng chúng dễ dàng đối với người dùng Có thể nghĩ rằng một địa chỉ đường dẫn như là giao diện tự đóng gói mà đòi hỏi ít lý giải hoặc tham chiếu, nếu có, đối với một nhà phát triển để hiểu nó nhắm đến điểm gì và phân phát. .. được nhiều khách hàng khác nhau sử dụng, viết bằng các ngôn ngữ khác nhau, chạy trên nền và thiết bị khác nhau Sử dụng kiểu MIME và phần đầu HTTP Accept là một cơ chế được biết như là nội dung thương thuyết, cái mà cho phép máy khách chọn định dạng dữ liệu nào là đúng với chúng và tối thiểu hoá sự nối lại giữa dịch vụ và các ứng dụng mà sử dụng nó 30 Chương 3: Phát triển Web dựa trên RESTful trong... thích vì sao chúng quan trọng đối với các nhà thiết kế dịch vụ mạng REST Sử dụng các phương thức HTTP một cách rõ ràng Một đặc tính quan trọng của dịch Web service RESTful là sử dụng một cách rõ ràng các phương thức HTTP theo cách một giao thức được xác định bởi RFC 2616 Ví dụ HTTP GET được xác định như là một phương thức sinh ra số liệu được sử dụng có chủ đích bởi các ứng dụng người dùng để thu thập tài... hồi cùng với một gói thông tin tương thích REST yêu cầu các nhà phát triển sử dụng phương thức HTTP một cách rõ ràng theo cách tương thích với giao thức chuẩn Nguyên lý thiết kế REST cơ bản này thiết lập một ánh xạ 1-1 giữa các hành động tạo, đọc, cập nhật và xoá (CRUD) các quá trình vận hành và các phương thức HTTP Theo cách ánh xạ này thì: • Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương... khả năng yêu cầu loại nội dung cụ thể cho các ứng dụng máy khách mà phù hợp nhất với chúng, hãy cấu trúc dịch vụ của bạn sao cho nó tận dụng được phần đầu chấp nhận HTTP sẵn có bên trong, nơi giá trị của phần đầu là một loại MIME Một vài loại MIME thông thường được sử dụng bởi dịch vụ RESTful được thể hiện trong Bảng 1 Bảng 1 Loại MIME phổ biến được sử dụng bởi dịch vụ RESTful MIME-Type Content-Type... phép các đối tượng thấy được Web service theo từng loại với nó • Trang xanh – Green pages: chứa thông tin kỹ thuật mô tả các hành vi và các chức năng của Web service 13 • Loại dịch vụ – tModel: chứa các thông tin về loại dịch vụ được sử dụng Những thông tin về Web service được sử dụng và công bố lên mạng sử dụng giao thức này Nó sẽ kích hoạt các ứng dụng để tìm kiếm thông tin của Web service khác nhằm... URI Ví dụ 5 cũng có hiệu ứng từ việc đổi tên tài nguyên từ Robert sang Bob, và trong việc các thay đổi của URI sang /users/Bob Trong một dịch vụ mạng REST, lệnh tiếp theo của tài nguyên sử dụng URI cũ sẽ sinh ra lỗi căn bản 404 Not Found Như là một nguyên tắc thiết kế chung, nó giúp theo sát các hướng dẫn sử dụng REST để sử dụng các phương pháp HTTP một cách rõ ràng bằng cách sử dụng các danh từ trong... /updateuser Nguyên tắc thiết kế chung này cũng áp dụng đối với phần thân câu lệnh HTTP, được sử dụng có chủ ý để chuyển trạng thái tài nguyên, không mang tên của một phương thức hay thủ tục remote từ xa Phi trạng thái Các Web service REST cần được điều chỉnh về quy mô để đáp ứng được các yêu cầu ngày càng cao về chất lượng thực hiện Các khu vực lưu trữ của máy chủ với khả năng cân bằng tải và vượt qua sự