CHƯƠNG 1.1 Sơ đồ kiến trúc tổng thể Hình 1. Sơ đồ kiến trúc tổng thể 1.2 Giới thiệu về API 1.1 Khái niệm về API Hình 1. API API (Application Programming Interface) là một giao diện lập trình ứng dụng mà một hệ thống máy tính hay ứng dụng cung cấp để cho phép các yêu cầu dịch vụ có thể được tạo ra từ các chương trình máy tính khác và cho phép dữ liệu có thể được trao đổi qua lại giữa chúng. − Tính Tương thích (Compatibility): API giúp tạo ra sự tương thích giữa các hệ thống khác nhau.
Các ứng dụng và dịch vụ có thể giao tiếp và làm việc cùng nhau thông qua API, kể cả khi chúng được xây dựng bằng các ngôn ngữ hoặc framework khác nhau. − Tách Biệt Logic (Separation of Concerns): API giúp tách biệt logic của ứng dụng thành các thành phần độc lập. Điều này giúp dễ bảo trì, mở rộng, và cập nhật mỗi phần riêng lẻ mà không ảnh hưởng đến phần còn lại của hệ thống. − Tính Mô-đun (Modularity): API tạo điều kiện cho tính mô-đun trong phát triển phần mềm.
Các chức năng có thể được triển khai và duy trì dưới dạng các dịch vụ độc lập, giúp quản lý mã nguồn dễ dàng hơn. 3 − Tính Mở Rộng (Scalability): API giúp xây dựng các hệ thống có khả năng mở rộng. Bạn có thể thêm mới hoặc thay đổi các phần của hệ thống mà không ảnh hưởng đến các phần khác, giúp hỗ trợ lưu lượng và sự mở rộng tốt hơn. − Tính Tích Hợp (Integration): API cho phép tích hợp giữa các ứng dụng và dịch vụ khác nhau.
Các hệ thống có thể tương tác mà không cần biết chi tiết về cách hệ thống khác hoạt động bên trong. − Tính Đảm Bảo (Security): API có thể cung cấp kiểm soát quyền truy cập, xác thực, và các phương tiện khác để bảo vệ dữ liệu và tài nguyên của hệ thống. − Tính Phổ Quát (Universality): API làm cho dữ liệu và chức năng của hệ thống trở nên phổ biến và có thể sử dụng bởi nhiều ứng dụng và dịch vụ khác nhau. − Tính Linh Hoạt (Flexibility): API giúp chúng ta linh hoạt trong việc thay đổi hoặc nâng cấp một phần của hệ thống mà không làm thay đổi phần còn lại.
− Phát Triển Đồng Thời (Concurrent Development): API cho phép các nhóm phát triển đồng thời trên các phần khác nhau của ứng dụng mà không xung đột với nhau. − Tính Di Động (Mobility): API giúp hỗ trợ tích hợp với các thiết bị di động và các ứng dụng di động một cách dễ dàng. − Link tham khảo: [1] 1.2 Những đặc điểm nổi bật của API − API sử dụng mã nguồn mở, dùng được với mọi client hỗ trợ XML, JSON. − API có khả năng đáp ứng đầy đủ các thành phần HTTP: URI, request/response headers, caching, versioning, content format… − Mô hình web API dùng để hỗ trợ MVC.
Ngoài ra, nó cũng hỗ trợ RESTful đầy đủ các phương thức như: GET, POST, PUT, DELETE các dữ liệu. − Các response trả về nổi bật: + 200: OK + 201: Created + 204: No Content + 401: Unauthorized + 403: Forbidden + 404: Not Found + 500: Server Error 4 Thư viện ĐH Thăng Long 1.3 RESTful API Hình 1. RESTful API REST API (còn được biết với tên gọi RESTful API) là một giao diện lập trình ứng dụng (API) mà tuân thủ các ràng buộc và quy ước kiến trúc REST được sử dụng trong việc giao tiếp giữa client và server. − Hai thành phần trong REST API: + API (Application Programming Interface) là tập hợp các quy tắc và cơ chế mà một ứng dụng hay một thành phần nào đó có khả năng tương tác với một ứng dụng với thành phần khác.
API sẽ trả về những kiểu dữ liệu phổ biến như JSON hoặc XML mà các ứng dụng cần sử dụng đến. + REST (Representational State Transfer) là một dạng chuyển đổi cấu trúc hay kiểu kiến trúc để viết API. Nó có khả năng tạo ra sự tương tác giữa các máy với nhau thông qua phương thức HTTP đơn giản. Chức năng của REST là quy định sử dụng các phương thức HTTP và định dạng URL cho ứng dụng web.
REST API cung cấp nhiều phương thức để thao tác với dữ liệu, trong đó có 4 phương thức phổ biến nhất: − GET: yêu cầu dữ liệu từ máy chủ. − POST: gửi các thay đổi từ máy khách đến máy chủ khi thêm thông tin vào máy chủ, như tạo một mục mới. − PUT: sửa đổi hoặc thêm vào thông tin hiện có. − DELETE: xóa thông tin hiện có.
Link tham khảo: [2].3 Mô tả kiến trúc tổng thể Hệ thống này được chia làm 2 phần: Client và Server. Mỗi phần đều có những chức năng và đặc điểm riêng. Client: − Đây là nơi giúp người dùng có thể nhìn thấy, nhằm mục đích tương tác, giao tiếp với Server qua giao diện người dùng. − Công nghệ sử dụng: VueJS, Ant Design, Vuetify Server: − Server là nơi trực tiếp xử lý mọi request của client và trả lại những thông tin nếu cần thiết.
− Các endpoints (APIs) của server sẽ được thiết kế theo phong cách RESTful, nhằm mục đích tạo nơi giao tiếp giữa các những server và giao diện người dùng. Công nghệ sử dụng: NodeJS, NestJS, MongoDB.4 Công nghệ với ngôn ngữ sử dụng 1. Công nghệ NodeJS − Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên Javascript Runtime của Chrome mà chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng. 6 Thư viện ĐH Thăng Long − Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao.
− Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh nhờ cơ chế xử lý bất đồng bộ (non-blocking), xử lý hàng nghìn kết nối một lúc mà không gặp bất cứ khó khăn nào, realtime thời gian thực. − Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo fra các dự án Startup nhanh nhất có thể. Link tham khảo: [3]. Lý do sử dụng: Phát triển đa nền tảng, với nền tảng thương mại điện tử cần hiệu suất tối ưu nên nodejs là lựa chọn hợp lý, ví dụ như các chức năng: xem chi tiết sản phẩm, thanh toán… Có thể tùy chỉnh dễ dàng theo nhu cầu tốt nhất có lợi cho nền tảng thương mại điện tử.
Một trong những tính năng cần thiết là tương tác thời gian thực với khách hàng. Trên thực tế, Node.js cũng hỗ trợ đắc lực cho việc triển khai nền tảng hoặc công cụ dựa trên trò chuyện. Hơn nữa, quản trị viên sẽ thấy thuận tiện khi quản lý tốt các sản phẩm cho dù đó là một nhà cung cấp đơn lẻ.js luôn coi trọng việc đơn giản hóa việc quản lý danh sách sản phẩm với sự trợ giúp của cơ sở dữ liệu NoSQL. Công nghệ NestJS NestJS là một framework mã nguồn mở để phát triển ứng dụng server-side (backend application) bằng ngôn ngữ Typescript hoặc Javascript.
Nó được xây dựng trên cơ sở của NodeJS và sử dụng các khái niệm từ Typescript để tạo ra một môi trường phát triển hiện đại và mạnh mẽ cho việc xây dựng các ứng dụng web và API Những ưu điểm khi dùng NestJS: − Cho phép develop nhanh và hiệu quả hơn − Khả năng mở rộng tốt, dễ bảo trì ứng dụng − Sử dụng Typescript, cho phép thích ứng nhanh chóng với các thay đổi khi JavaScript đang ngày càng phát triển mạnh mẽ Link tham khảo: [4]. 8 Thư viện ĐH Thăng Long 1. Công nghệ MongoDB MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng. MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.
Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server.) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng. Ưu điểm của mongoDB: − Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên chúng ta có thể linh động trong việc thêm sửa xóa dữ liệu; − Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS; − Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Với một lượng dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL. Link tham khảo: [5].
Lý do sử dụng: Các trang thương mại điện tử ngày nay cần các mô hình dữ liệu phong phú và các truy vấn động. MongoDB cung cấp điều này. Yêu cầu của khách hàng đối với các trang web hoặc ứng dụng ngày càng lớn. Các yếu tố quan trọng nhất trong việc cải thiện trải nghiệm khách hàng bao gồm tính khả dụng, tốc độ và độ tin cậy.
Một 9 hệ thống cơ sở dữ liệu được định cấu hình đúng như MongoDB có khả năng chống lại các lỗi, có thể mở rộng và cho phép phân cấp và lưu trữ một lượng lớn dữ liệu, vì vậy nó đáp ứng nhu cầu với dự án này. Công nghệ VueJS Vue.js là một framework (khung ứng dụng) JavaScript mã nguồn mở dùng để xây dựng các giao diện người dùng (UI) động cho các ứng dụng web.js tập trung vào việc tạo các thành phần (component) tái sử dụng và dễ sử dụng, và cung cấp các tính năng để quản lý trạng thái ứng dụng (application state) một cách hiệu quả.js có thể tích hợp vào các ứng dụng web hiện có hoặc được sử dụng để xây dựng các ứng dụng web độc lập.js cũng được đánh giá cao về hiệu suất và khả năng tương thích với các thư viện và framework khác.js có nhiều tính năng hữu ích để xây dựng các ứng dụng web động và tạo các giao diện người dùng (UI) đẹp và dễ sử dụng. Sau đây là một số tính năng chính của Vue.js: • Tạo các thành phần (component) tái sử dụng và dễ sử dụng: Vue.js cho phép tạo các thành phần (component) tái sử dụng để giúp tách biệt các phần khác nhau của ứng dụng web và làm cho mã nguồn dễ đọc và dễ bảo trì hơn. • Quản lý trạng thái ứng dụng (application state) một cách hiệu quả: Vue.