Chương 1. Đặc tả yêu cầu 1. Yêu cầu chức năng 1. Chức năng của RESTful API server Xác thực người dùng bằng token: tương ứng với những request cần xác thực người dùng hoặc chỉ admin mới có quyền thực hiện request đó, hệ thống sẽ kiểm tra token được gửi kèm header để xác thực người dùng.
Ngoài ra, cũng có thể tạo mới token bằng email và mật khẩu. Quản lý dữ liệu model: cho phép gửi các request tạo, cập nhật, xóa dữ liệu của các model loại phòng, loại nội thất, màu sắc, vật liệu nội thất và nội thất với mức độ xác thực là người quản trị. Những request truy xuất dữ liệu thì không cần xác thực. Quản lý phiên bản dữ liệu json: cho phép gửi request tạo một phiên bản dữ liệu json mới với mức độ xác thực là người quản trị.
Những request không được xác thực chỉ có quyền truy xuất. Quản lý dữ liệu đóng gới bởi Unity addressables: cho phép gửi request tải lên dữ liệu được đóng gói bằng Unity addressables với mức độ xác thực là người quản trị. Những người dùng không được xác thực chỉ được quyền tải xuống. Chức năng của ứng dụng web client Đăng nhập: cho phép người quản trị dùng nhập địa chỉ email và mật khẩu để đăng nhập.
Nếu đăng nhập không thành công thì thông báo lỗi. Quản lý dữ liệu model: tính năng chỉ được cung cấp khi người quản trị đăng nhập thành công. Tương ứng với mỗi model dữ liệu loại phòng, loại nội thất, màu sắc, vật liệu nội thất và nội thất, ứng dụng sẽ cung cấp các công cụ liệt kê, tìm kiếm, tạo, cập nhật và xóa dữ liệu. Quản lý phiên bản dữ liệu json: tính năng chỉ được cung cấp khi người quản trị đăng nhập thành công.
Liệt kê toàn bộ phiên bản dữ liệu json cùng với tùy chọn tạo mới phiên bản dữ liệu json. Quản lý dữ liệu được gói bởi Unity addressables: tính năng chỉ được cung cấp khi người quản trị đăng nhập thành công. Cho phép tải lên dữ liệu được đóng gói bởi Unity addressables. GVHD: Trần Công Án 12 SVTH: Nguyễn Thanh Khoa Ứng dụng bán đồ nội thất sử dụng thực tế tăng cường 1.
Chức năng của ứng dụng AR mobile Kiểm tra cập nhật dữ liệu: kiểm tra phiên bản dữ liệu mô hình và dữ liệu json trên thiết bị so với trên server, tiến hành tải dữ liệu mới nhất về và lưu trữ sử dụng offline. Liệt kê danh sách đồ nội thất: liệt kê những món đồ nội thất theo loại nội thất tương ứng với loại phòng. Tìm kiếm đồ nội thất: tìm kiếm đồ nội thất theo tên gần đúng. Gợi ý đồ nội thất theo phong thủy: gợi ý những đồ vật phù hợp với phong thủy theo mệnh của người dùng.
Quản lý nội thất yêu thích: quản lý liệt kê, thêm, xóa nội thất yêu thích. Kéo thả đồ nội thất đặt vào không gian người dùng: kéo thả mô hình 3D của một món đồ nội thất bất kì và đặt vào không gian thực của người dùng. Tinh chỉnh đồ nội thất trong không gian người dùng: cho phép người dùng chọn món đồ nội thất trong không gian, di chuyển, xoay đồ nội thất. Quản lý đồ nội thất đã đặt vào không gian người dùng: cho phép xóa một hoặc tất cả các món đồ nội thất đã đặt vào không gian của người dùng.
Quản lý hiển thị mặt phẳng, điểm: cho phép người dùng tùy chọn ẩn hoặc hiện mặt phẳng, điểm đặc trưng được phát hiện bởi ARCore. Chụp ảnh màn hình: tính năng chụp ảnh mô hình đã đặt vào không gian của người dùng, cho phép người dùng xem lại sau. Làm mới phân cảnh: tạo mới phiên làm việc của ARCore, tiến hành nhận dạng lại từ đầu không gian của người dùng. GVHD: Trần Công Án 13 SVTH: Nguyễn Thanh Khoa Ứng dụng bán đồ nội thất sử dụng thực tế tăng cường 1.
Yêu cầu phi chức năng 1. Giao diện Giao diện đơn giản, dễ sử dụng. Đối với ứng dụng web quản lý thì giao diện sẽ thống nhất theo một mẫu chung để hướng tới tính quen thuộc, dễ sử dụng. Đối với ứng dụng mobile: vì ứng dụng AR nên cần tối ưu hóa giao diện người dùng, chiếm ít không gian của màn hình nhất có thể.
Phần cứng Ứng dụng web chỉ hỗ trợ trên trình duyệt desktop. Ứng dụng AR chạy trên các thiết bị mobile hệ điều hành android 7.0 trở lên và phải có hỗ trợ ARCore. GVHD: Trần Công Án 14 SVTH: Nguyễn Thanh Khoa Ứng dụng bán đồ nội thất sử dụng thực tế tăng cường Chương 2. Thiết kế giải pháp 2.
Giới thiệu về API và RESTful API API (Application programming interface) là những quy tắc tương tác để các ứng dụng hoặc thành phần của ứng dụng có thể giao tiếp được với nhau. Mục đích của API là để đơn giản hóa việc lập trình bằng cách trừu tượng hóa đi những cài đặt phức tạp và chỉ phơi bài ra các cách thức để thực hiện hành động mà lập trình viên cần. Trong ngữ cảnh lập trình web, API là cách thức để ứng dụng trao đổi dữ liệu với một dịch vụ trực tuyến. API sẽ cung cấp các chức năng dịch vụ thông qua đường dẫn URL (Uniform Resource Locator) với định nghĩa thông số kỹ thuật như gửi request bằng HTTP (Hypertext Transfer Protocol) và trả về response message theo định dạng XML (Extensible Markup Language) hoặc JSON (JavaScript Object Notation).
Một webservice tuân thủ theo kiến trúc REST thì được gọi là RESTful webservice. Webservice này sử dụng giao thức HTTP để triển khai kiến trúc web. Như vậy, RESTful API chính là kiến trúc thiết kế API tuân thủ theo kiến trúc REST thông qua các phương thức của HTTP (GET, POST, PUT, DELETE,. Tương ứng với mỗi phương thức HTTP sẽ thực hiện những tác vụ tương ứng: Phương thức HTTP Tác vụ GET Lấy dữ liệu POST Tạo dữ liệu mới PUT Cập nhật dữ liệu DELETE Xóa dữ liệu Bảng 2.
Các tác vụ cơ bản của REST dựa trên phương thức HTTP Các tác vụ đọc, tạo, cập nhật, xóa được gọi là CRUD service (Create, Read, Update, Delete). Mỗi tác vụ trên phải được gọi thông qua địa chỉ URI (Uniform Resource Identifier) kèm theo phương thức và payload (có thể có hoặc không, thường là định dạng XML hoặc JSON). GVHD: Trần Công Án 15 SVTH: Nguyễn Thanh Khoa Ứng dụng bán đồ nội thất sử dụng thực tế tăng cường Hình 2. Mô hình hoạt động cơ bản của REST RESTful API sử dụng giao thức stateless (là một giao thức truyền thông không sử dụng session) và theo tiêu chuẩn nên hệ thống sẽ nhanh, đáng tin cậy và có thể mở rộng dễ dàng.
Thông thường, RESTful API sẽ xác thực người dùng khi gửi yêu cầu đối với những tác vụ nguy hiểm như cập nhật hoặc xóa dữ liệu hoặc chỉ cho phép đối với người quản trị. Django framework Hình 2. Logo của thư viện django Django là một framework mã nguồn mở được viết bằng Python, dùng để đơn giản hóa việc phát triển những ứng dụng web phức tạp, hướng cơ sở dữ liệu. Được tạo ra bởi cặp đôi lập trình viên web Adrian Holovaty và Simon Willison vào năm 2003, công bố lần đầu tiên vào năm 2005 dưới giấy phép BSD.
Hiện nay django được duy trì bởi tổ chức Django Software Foundation (một tổ chức được thành lập dưới dạng 501 phi lợi nhuận). Tiêu chí của django hướng tới là tái sử dụng các thành phần, ít code, các thành phần phụ thuộc lỏng lẽo với nhau và đặc biệt là phát triển ứng dụng một các nhanh chóng. Thay vì thao tác trực tiếp với cơ sở dữ liệu, thông qua django, chúng ta chỉ cần khai báo model dữ liệu thông qua class python. Khi đó các công việc tạo, lấy, cập nhật, xóa dữ liệu (CRUD service) sẽ được hỗ trợ tự động bởi django bằng cách gửi những HTTP request tới URL được cung cấp bởi server django.
GVHD: Trần Công Án 16 SVTH: Nguyễn Thanh Khoa Ứng dụng bán đồ nội thất sử dụng thực tế tăng cường Khi sử dụng django sẽ giúp cho việc tạo ra một ứng dụng web trở nên đơn giản, an toàn và nhanh chóng: − Đơn giản: không cần quan tâm tới việc thao tác với cơ sở dữ liệu, xây dựng các trigger hay procedure phức tạp. Có thể thay đổi sang một hệ quản trị cơ sở dữ liệu khác một cách dễ dàng. − An toàn: cung cấp hệ thống xác thực người dùng, quản lý tài khoản và mật khẩu an toàn, giúp lập trình viên chống các lỗi bảo mật thông thường như SQL injection. − Nhanh chóng: django được thiết kế để giúp những nhà phát triển tạo ra ứng dụng web nhanh nhất có thể.
Django sử dụng mô hình MVT (Model – View – Template). Mô hình MVT cũng tương tự mô hình MVC, tuy nhiên dễ gây nhầm lẫn bởi View trong MVT tương ứng với Controller trong MVC còn Template thì tương ứng với View. Mô hình MVT và MVC Đối với mô hình MVT thì các thành phần được sử dụng độc lập với nhau: − Model: là phần dùng để xử lý cơ sở dữ liệu. Đây là lớp truy xuất dữ liệu, chứa các trường bắt buộc và các hành vi xử lý dữ liệu (tạo, thêm, sửa, xóa,.
GVHD: Trần Công Án 17 SVTH: Nguyễn Thanh Khoa Ứng dụng bán đồ nội thất sử dụng thực tế tăng cường − View: là phần dùng để thực thi các tác vụ logic và tương tác với một model để lấy dữ liệu và kết xuất ra template. − Template: là lớp giao diện, được dùng để xử lý phần giao diện người dùng. Tuy nhiên, khi sử dụng django để xây dựng API với django rest framework thì phần giao diện người dùng không được sử dụng nên Template sẽ được gỡ bỏ. Django rest framework Hình 2.
Logo của django rest framework Django rest framework (DRF) là một core framework của django, cung cấp bộ công cụ tùy biến mạnh mẽ để xây dựng web APIs. DRF sẽ đơn giản hóa công việc tạo ra RESTful API. Một số khái niệm cần nắm vững để xây dựng REST API dựa trên django và django rest framework: − Model: là mô hình dữ liệu được thể hiện bằng python class. Trong cơ sở dữ liệu quan hệ, tên model có thể hiểu là tên bảng, các trường của model tương ứng với các cột.
Django cũng hỗ trợ các quan hệ 1-1, 1-n, n-n. Khi model dữ liệu có thay đổi, django sẽ tự động cập nhật trong cơ sở dữ liệu thông qua 2 lệnh makemigations và migrate. − Serializer: là class python hỗ trợ chuyển đổi các đối tượng được truy vấn từ model dưới dạng kiểu dữ liệu của python thành định dạng XML, JSON hoặc loại khác và ngược lại. Đây là một công cụ mạnh mẽ dùng để chuyển dữ liệu của request về kiểu dữ liệu python để xử lý và chuyển thành dữ liệu XML hoặc JSON cho response.