Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
1,03 MB
Nội dung
Bài giảng PHÁT TRIỂN ỨNG DỤNG WEB Lê Đình Thanh Khoa Công nghệ Thông tin Trường Đại học Công nghệ, ĐHQGHN E-mail: thanhld@vnu.edu.vn Mobile: 0987.257.504 Chương Viết lại định tuyến URL Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Nội dung • • • Viết lại URL Định tuyến URL REST Lê Đình Thanh, Bài giảng Phát triển ứng dụng web W3C standard, non-semantic URL • URL hay Định vị tài ngun đồng dùng để xác định vị trí (tồn cầu) tài ngun Internet scheme://host:port/path?query_string#bookmark • Ví dụ http://uet.vnu.edu.vn:8080/daotao/monhoc.py Lược đồ Địa Server Cổng chạy ứng dụng web, mặc định 80 Tên thư mục Tên tài nguyên ?mamon=15&hanhdong=xem#mota Chuỗi truy vấn Điểm đánh dấu Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Semantic URL • Tạo liên kết gọn gàng, dễ nhớ, thân thiện với người dùng thân thiện với search engines Che chuỗi truy vấn người dùng Cho site sử dụng URL thay đổi cơng nghệ phía TRY IT YOURSELF http://www.tienphong.vn/xa-hoi/phong-su/602827/Vuot-thoat-mot-Con-Dao-chinh-minh.html http://www.tienphong.vn/xa-hoi/phong-su/602827/misc.html http://www.tienphong.vn/xa-hoi/phong-su/602827/does-not-matter.html http://www.tienphong.vn/xa-hoi/phong-su/602827/whatever-you-like.html Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Viết lại URL gì? • Viết lại URL (URL Rewrite) sửa đổi URL web client yêu cầu trước web server phục vụ • Rewrite Engine thực viết lại URL Apache: mod_rewrite http://uet.vnu.edu.vn/user.php?username=minhtran HTTP Request http://uet.vnu.edu.vn/minhtran Rewrite Engine Web client HTTP Response Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Web server Viết lại URL nào? http://uet.vnu.edu.vn/minhtran URL0 (web client yêu cầu) Rewrite Engine thực viết lại URL dựa tập luật cấu hình trước Luật URL1 Luật URL2 Luật cho biết cách sửa đổi URL, viết theo biểu thức quy URLn-1 Luật n URLn (web server phục vụ) http://uet.vnu.edu.vn/user.php?username=minhtran Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Luật viết lại URL URLi (RewriteCond TestString CondPattern ([c-flags])?)* RewriteRule (!)? Pattern Substitution ([r-flags])? URLi+1 URLi+1 = URLi [Nếu TestString khớp CondPattern] Nếu URLi (không) khớp Pattern URLi+1 = Substitution Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Luật i Luật viết lại URL (tiếp) • Pattern, CondPattern xâu ký tự viết theo biểu thức quy • Cú pháp biểu thức quy: [string] [^string] (text) text1|text2 ? * + ^ $ \char Bất kỳ ký tự Bất kỳ ký tự thuộc “string” Bất kỳ ký tự khác ký tự thuộc “string” Nhóm văn text1 text2 lần xuất văn phía trước N lần xuất văn phía trước (N > 0) N lần xuất văn phía trước (N > 1) Bắt đầu liên kết Kết thúc liên kết ký tự đặc biệt char Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Ví dụ Pattern • ^/wiki/.*$ o Khớp /wiki/Semantic_URL o Khơng khớp /wiki-Semantic_URL • ^/su-kien/.*-[0-9]+\.htm$ o Khớp /su-kien/mien-bac-mien-trung-mua-lon-trong-ngaytrung-thu-20171004080130699.htm /su-kien/bao-dan-tri-tang-qua-trung-thu-cho-cac-emco-hoan-canh-kho-khan-20171004065430012.htm o Không khớp /su-kien/987-error.htm Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Định tuyến URL nào? • Ứng dụng web thực định tuyến URL Một trang đặc biệt gọi điều khiển mặt trước (front controller) tiếp nhận request Bộ điều khiển mặt trước giống cửa vào ứng dụng Cần hỗ trợ viết lại URL để chuyển hướng request đến trang khác điều khiển mặt trước Bộ điều khiển mặt trước chuyển URL cho định tuyến (router) Bộ định tuyến phân tích url để xác định xử lý phục vụ Xử lý gọi thực 1' http request Other pages 2' redirect by rewriting URI Router Front Action name + parameters controller parameters Action http response http request Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Chuyển hướng tất trang điều khiển mặt trước Tệp htaccess thư mục gốc Options +FollowSymLinks IndexIgnore */* RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule * index.php Lê Đình Thanh, Bài giảng Phát triển ứng dụng web REST • Phong cách REST (Representational State Transfer) • Mỗi tài nguyên khái niệm, ánh xạ đến thực thể • Đặt tên cho tài nguyên ánh xạ tài nguyên đến URL • RESTful hay REST-style URL Lê Đình Thanh, Bài giảng Phát triển ứng dụng web REST • Tài ngun dạng sưu tập cá thể: /forums /forums/{forumId} Lê Đình Thanh, Bài giảng Phát triển ứng dụng web REST • Tài ngun chứa tài nguyên con: /forums/{forumId}/posts /forums/{forumId}/posts/{postId} /forums/{forumId}/meta Lê Đình Thanh, Bài giảng Phát triển ứng dụng web REST • Tài nguyên điều khiển (controller resource) sử dụng để mơ hình hóa hàm chức năng: /forums/{forumId}/close Lê Đình Thanh, Bài giảng Phát triển ứng dụng web REST • Kết hợp URL với phương thức HTTP để mơ hình hóa hàm CRUD: GET /forums/{forumId}/posts GET /forums/{forumId}/posts/{postId} POST /forums/{forumId}/posts PUT /forums/{forumId}/posts/{postId} DELETE /forums/{forumId}/posts/{postId} Lê Đình Thanh, Bài giảng Phát triển ứng dụng web REST • Có thể sử dụng truy vấn để thực tính chung xếp, lọc, phân trang tài nguyên sưu tập: GET /forums/{forumId}/posts?from=01/01/2018&sor t=date&order=desc Lê Đình Thanh, Bài giảng Phát triển ứng dụng web REST • Khác: • • • • • sử dụng chữ viết thường, sử dụng dấu gạch ngang (-) không sử dụng dấu gạch (_) không sử dụng tên mở rộng tệp không sử dụng dấu chéo trái cuối URL Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Định tuyến cho RESTful URL • Tên bó, tên điều khiển tên hành động tên thực thể khơng cần xuất URL • Bộ định tuyến cần ánh xạ tên tài nguyên sang thực thể bó, điều khiển hành động • Kiểm tra phương thức HTTP đối sánh URL với biểu thức quy Nếu phương thức HTTP biểu thức quy thỏa mãn, định tuyến trả tên bó, tên điều khiển, tên hành động tham số tương ứng Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Định tuyến cho RESTful URL • Tên bó, tên điều khiển tên hành động tên thực thể không cần xuất URL • Bộ định tuyến cần ánh xạ tên tài nguyên sang thực thể bó, điều khiển hành động • Kiểm tra phương thức HTTP đối sánh URL với biểu thức quy Nếu phương thức HTTP biểu thức quy thỏa mãn, định tuyến trả tên bó, tên điều khiển, tên hành động tham số tƣơng ứng Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Laravel https://laravel.com 34 Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Ánh xạ URL đến hành động lớp điều khiển