Từ việc cung cấp dữ liệu theo thời gian thực đến xử lý yêu cầu từ phía người dùng, ứng dụng RESTful có thể là một công cụ hiệu quả giúp doanh nghiệp hoặc tổ chức tương tác với khách hàng
Trang 1TRƯỜNG ĐẠI HỌC VĂN LANG
KHOA CÔNG NGHỆ THÔNG TIN
TRƯỜNG ĐẠI HỌC VĂN LANG
KHOA CÔNG NGHỆ THÔNG TIN
8
Chủ đề:
CREATING RESTFUL WEB APPLICATIONS WITH FLASK
SVTH: Nguyễn Quốc Tuấn MSSV: 2274802010967 GVHD: ThS Trần Kim Mỹ Vân
BÁO CÁO ĐỒ ÁN MÔN HỌC
LẬP TRÌNH PYTHON NÂNG CAO
TP Hồ Chí Minh – năm 2024
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN 2
1.1 Giới thiệu 2
1.2 Mục tiêu 2
1.2.1 Nắm vững kiến thức chuyên môn: 2
1.2.2 Phát triển kỹ năng 3
1.3 Các công nghệ chính 3
CHƯƠNG 2: QUY TRÌNH HOẠT ĐỘNG 5
2.1 Quy trình 5
2.2 Chức năng 5
2.3 Ưu điểm/ nhược điểm 6
Ưu điểm: 6
Nhược điểm: 6
CHƯƠNG 3: KẾT LUẬN 7
CHƯƠNG 4: DEMO 8
Trang 3L I Ờ M Đ U Ở Ầ
Chào mừng mọi người đến với đồ án xây dựng ứng dụng RESTful Web Application của mình! RESTful Web Application, hay ứng dụng web dựa trên kiến trúc REST, đang trở thành một giải pháp phổ biến trong nhiều lĩnh vực kinh doanh và đời sống nhờ khả năng linh hoạt và tương tác dễ dàng qua các giao thức web Từ việc cung cấp dữ liệu theo thời gian thực đến xử lý yêu cầu từ phía người dùng, ứng dụng RESTful có thể là một công cụ hiệu quả giúp doanh nghiệp hoặc tổ chức tương tác với khách hàng một cách nhanh chóng
và mượt mà Trong đồ án này, chúng ta sẽ xây dựng một RESTful Web Application với Flask, một framework web mạnh mẽ và dễ sử dụng trong Python Flask hỗ trợ tích hợp với các công nghệ tiên tiến như xử lý ngôn ngữ tự nhiên hay cơ sở dữ liệu, giúp chúng ta dễ dàng phát triển các ứng dụng linh hoạt và mở rộng theo nhu cầu thực tiễn Kiến trúc RESTful giúp ứng dụng của bạn dễ dàng xử lý các yêu cầu từ phía người dùng, mang lại trải nghiệm thân thiện và hiệu quả Với việc áp dụng Flask để xây dựng RESTful API, đồ án này sẽ giúp bạn hiểu sâu về cách phát triển các ứng dụng web hiện đại, khám phá những tiềm năng mà RESTful Web Application mang lại và tạo ra các giải pháp sáng tạo đáp ứng nhu cầu ngày càng cao của thế giới số hóa Hãy cùng khám phá và trải nghiệm những điều tuyệt vời mà kiến trúc RESTful và Flask mang lại cho ứng dụng
1
Trang 4CH ƯƠ NG 1: T NG QUAN Ổ
1.1 Giới thiệu
Vào thời điểm hiện tại, việc kết nối và giao tiếp trực tuyến đã trở nên phổ biến Các ứng dụng chat, nền tảng mạng xã hội đã trở thành công cụ không thể thiếu trong cuộc sống con người Dồ án này nhằm mục tiêu xây dựng một ứng dụng web chat room đơn giản, cho phép người dùng kết nối và trò chuyện với nhau trong thời gian thực Ứng dụng được phát triển dựa trên framework Flask của Python, tận dụng sức mạnh của RESTful API và SocketIO
để tạo ra trải nghiệm giao tiếp liền mạch và hiệu quả
1.2 Mục tiêu
1.2.1 N m v ng ki n th c chuyên môn: ắ ữ ế ứ
REST API là gì? Thiết kế REST hoặc RESTful API (State Representational State Transfer) được thiết kế để tận dụng các giao thức hiện có Mặc dù REST có thể được sử dụng trên hầu hết các giao thức nhưng HTTP vẫn được sử dụng phổ biến khi sử dụng API web Điều này
có nghĩa là các nhà phát
triển không cần phải cài
đặt thêm thư viện hoặc
phần mềm để tận dụng
thiết kế REST API Điều
đáng chú ý là lớp cực kỳ
linh hoạt của nó Vì dữ
liệu không bị ràng buộc
với các phương thức và tài
nguyên nên REST có thể
xử lý nhiều loại lệnh gọi,
trả về các định dạng dữ
liệu khác nhau và thậm chí
sửa đổi cấu trúc bằng cách triển khai hypermedia phù hợp Sự tự do và linh hoạt trong thiết
kế API REST cho phép bạn tạo một API đáp ứng nhu cầu của bạn đồng thời đáp ứng nhu cầu của nhiều khách hàng khác nhau Không giống như SOAP, REST không giới hạn ở XML mà có thể trả về XML, JSON, YAML hoặc bất kỳ định dạng nào khác tùy theo nhu cầu của khách hàng Và không giống như RPC, người dùng không được mờinhận biết tên của thủ tục hoặc các tham số cụ thể theo một thứ tự cụ thể
Để tạo một REST API đơn giản sử dụng python, chúng ta cần những thứ sau:
Python
Flask
Flask-SQLAIchenmy
Flask-Restful
Sqlite3
Jsonify
2
Trang 5Flask là gì? Flask là loại framework web phổ biến được viết bằng ngôn ngữ lập trình Python Công nghệ thường được sử dụng để xây dựng trang web từ những ứng dụng đơn giản đến những hệ thống phức tạp
Flask được thiết kế để hoạt động và mở rộng, đồng thời nó cũng cung cấp các công cụ và thư viện cần thiết để phát triển ứng dụng web hiệu quả Fask cũng có cộng đồng sáng tạo và
hỗ trợ mạnh mẽ từ cộng đồng Python
Ai là người tạo ra Flask? Flask được tạo ra bởi Armin Ronacher, một nhà phát triển phần mềm người Đức vào năm 2010 Anh ấy đã phát triển Flask với mục tiêu tạo ra một framework đơn giản nhưng mạnh mẽ để phát triển ứng dụng web bằng Python Quá trình phát triển Flask được với mục đích đơn giản hóa các yêu cầu mã nguồn yêu cầu, tạo ra một khung hoạt động và dễ dàng tiếp cận
Flask được phát triển theo ý tưởng "Micro - Framework", công nghệ tập trung vào các tính năng cơ bản và linh hoạt để các nhà phát triển có thể tùy chỉnh theo nhu cầu của họ Điều này đã giúp Flask trở thành một trong những framework web Python phổ biến nhất và được
ưa chuộng trong cộng đồng phát triển phần mềm
SocketIO là gì?
SocketIO là một thư viện cho phép kết nối với dộ trễ thấp, hai chiều và hoạt động trên hướng sự kiện giữa client và server
SocketIO hỗ trợ một tính năng phong phú khiến nó trở thành lựa chọn phù hợp chpo các nhà phát triển muốn xây dựng các ứng dụng yêu cầu cập nhật dữ liệu tức thời
1.2.2 Phát tri n kỹ năng ể
Thiết kế và phát triển ứng dụng web: Áp dụng kiến thức về Flask và RESTful API để thiết
kế và xây dựng backend của ứng dụng chat Room
Xây dựng chức năng chat thời gian thực: Sử dụng SocketIO để tạo ra chức năng chat thời gian thực, cho phép người dùng trao đổi thông tin nhanh chóng và mượt mà
Quản lý dữ liệu: Xây dựng logic để quản lý dữ liệu người dùng, phòng chat và tin nhắn, đảm bảo tính bảo mật và hiệu quả
Thiết kế giao diện người dùng: Sử dụng template Jinja2 để tạo ra giao diện người dùng đơn giản đẹp mắt, dễ sử dụng và thu hút
1.3 Các công nghệ chính
Python: Ngôn ngữ lập trình chính được sử dụng trong dự án
Flask: Framework web nhẹ nhàng và linh hoạt của Python, cung cấp khả năng xây dựng API RESTful hiệu quả
SocketIO: Thư viện Python mạnh mẽ cho phép truyền tải thông tin thời gian thực, là yếu tố chính tạo nên tính năng chat của ứng dụng
3
Trang 6Jinja2: Template engine của Python, hỗ trợ việc tạo ra giao diện người dùng động và dễ quản lý
HTML, CSS, JavaScript: Các ngôn ngữ web cơ bản được sử dụng để xây dựng giao diện người dùng cho ứng dụng
4
Trang 7CH ƯƠ NG 2: QUY TRÌNH HO T Đ NG Ạ Ộ
2.1 Quy trình
2.1.1 User Sends a Message (Người dùng gửi tin nhắn):
Người dùng nhập nội dung tin nhắn vào giao diện và nhấn gửi Tin nhắn được gửi từ client đến máy chủ (Flask server) thông qua Socket.IO với một sự kiện gửi tin nhắn (send_message event)
2.1.2 SocketIO Receives and Processes the
Message (Socket.IO nhận và xử lý tin nhắn):
Trên server Flask, SocketIO nhận dữ kiện
send_message chứa nội dung tin nhắn và
thông tin về người nhận Server kiểm tra dữ
liệu để đảm bảo rằng tin nhắn hợp lệ và
người nhận có trong hệ thống
2.1.3 SocketIO Relays the Message to the
Recipient (Socket.IO chuyển tiếp tin nhắn
đến người nhận):
Sau khi tin nhắn được xử lý, Socket.IO phát
(broadcast) tin nhắn tới người nhận Nếu
người nhận đang trực tuyến, tin nhắn sẽ được
gửi ngay lập tức đến client của người nhận
thông qua kết nối WebSocket
2.1.4 Recipient Receives and Views the Message (Người nhận nhận và xem tin nhắn):
Tin nhắn sẽ hiển thị ngay lập tức trong giao diện của người nhận, tạo trải nghiệm nhắn tin thời gian thực Điều này đảm bảo rằng tin nhắn xuất hiện mà không cần phải làm mới trang, và cả người gửi và người nhận đều có thể nhìn thấy tin nhắn tức thì
2.2 Chức năng
Chức năng gửi và nhận tin nhắn:
+ Gửi tin nhắn: Cho phép người dùng gửi tin nhắn đến người dùng khác qua Socket.IO truyền tải nhanh và tức thì
+ Nhận tin nhắn: Tin nhắn từ người gửi sẽ được chuyển đến người nhận ngay lập tức Chức năng tạo và quản lý phòng chat
+ Tạo phòng chat: Người dùng tạo phòng chat bằng cách nhập tên của mình sau đó tạo phòng Người dùng cũng có thể tạo mật mã của riêng cho phòng mình, để tiện hơn trong việc cho người khác vào phòng
5
Trang 8Tham gia phòng chat: Người dùng muốn vào phòng trước tiên cũng phải nhập tên của mình, sau đó nhập mã của phòng mà mình muốn tham gia sau đó nhấn “Join a room” thì sẽ được đưa vào phòng và bắt đầu cuộc trò chuyện
2.3 Ưu điểm/ nhược điểm
Ưu điểm:
- Thời gian thực (Real-time): Sử dụng Socket.IO, ứng dụng/web có khả năng gửi và nhận tin nhắn ngay lập tức, giúp tạo ra trải nghiệm nhắn tin nhanh chóng và liền mạch cho người dùng
- Tính tương tác cao (Interactive): Với khả năng giao tiếp hai chiều, người dùng có thể nhận các thông báo tin nhắn(đã nhận, đã đọc) và trạng thái trực tuyến của bạn bè
- Dễ dàng mở rộng (Scalable): Flask và Socket.IO hỗ trợ mở rộng cho ứng dụng khi
số lượng người dùng và dữ liệu tăng lên Ứng dụng có thể được triển khai cùng với các công nghệ khác như Redis hoặc một dịch vụ đám mây để quản lý kết nối theo thời gian thực tốt hơn
Nhược điểm:
- Hiệu suất có hạn: Flask là framework phù hợp cho các dự án vừa và nhỏ, nhưng có thể gặp giới hạn về hiệu suất khi ứng dụng phát triển lớn hơn hoặc có nhiều kết nối đồng thời, đặc biệt khi không tối ưu hóa đúng cách
- Quản lý phiên và kết nối phức tạp: Với Socket.IO, việc duy trì kết nối liên tục (WebSocket) giữa các client và server đòi hỏi phải quản lý kỹ các phiên và kết nối, đặc biệt khi số lượng người dùng tăng cao
- Không hoàn toàn phù hợp cho ứng dụng/ dự án lớn: Flask là một framework nhẹ, nên có thể thiếu các tính năng tích hợp sẵn mà các framework lớn hơn cung cấp Điều này khiến việc phát triển ứng dụng lớn với Flask đòi hỏi nhiều tùy chỉnh và quản lý
- Bảo trì phức tạp: Khi ứng dụng mở rộng, việc duy trì và quản lý hệ thống có thể trở nên phức tạp, đặc biệt là với các kết nối WebSocket thời gian thực, đòi hỏi thiết lập thêm các công cụ giám sát và cân bằng tải
- Khả năng mất kết nối: Nếu không được xử lý đúng cách, các kết nối WebSocket có thể bị ngắt hoặc không ổn định khi gặp phải các vấn đề mạng, gây ảnh hưởng đến trải nghiệm nhắn tin của người dùng
6
Trang 9CHƯƠNG 3: KẾT LUẬN
3.1 Kết quả đạt được
- Người dùng có thể tham gia và vào phòng chat với nhau
- Người dùng có thể gửi và nhận tin nhắn trong thời gian thực
- Giao diện người dùng đơn giản và thận thiện
3.2 Bài học kinh nghiệm
- Sử dụng framework Flask giúp đơn giản hóa quá trình xây dựng ứng dụng web, đặc biệt là ứng dụng RESTful
- SocketIO là công cụ hiệu quả để tạo ra các chức năng giao tiếp thời gian thực, đảm bảo việc truyền tải thông tin diễn ra nhanh chóng và mượt mà
- Template Jinja2 giúp tạo ra giao diện người dùng động và dễ quản lý, góp phần tạo nên trải nghiệm người dùng tích cực
3.3 Hướng phát triển
- Tính năng quản trị viên cho phép quản lý người dùng và phòng chat.Giúp đảm bảo
an ninh và kiểm soát hoạt động của ứng dụng
- Tính năng gửi file, hình ảnh, video, âm thanh để nâng cao tính tương tác và trao đổi thông tin đa dạng
- Tích hợp với các ứng dụng mạng xã hội khác
- Phát triển ứng dụng di động: Tạo ra ứng dụng di động cho iOS và Android để mở rộng phạm vi tiếp cận và cho phép người dùng truy cập ứng dụng trên nhiều thiết bị khác nhau
7
Trang 10CH ƯƠ NG 4: DEMO
8
Trang 1210