Xin chào! Hiện tại mình là một sinh viên đại học đang chuẩn bị đồ án tốt nghiệp (và cả tìm việc nữa...).
Trong quá trình viết máy chủ REST API bằng Flask, mình nghĩ sẽ thật tuyệt nếu có một mẫu chứa các tính năng dùng chung xuất hiện ở nhiều dự án, nên mình đã tạo ra dự án này.
Các tính năng hiện có như sau.
Đăng ký thành viên, đăng nhập và xác thực bằng JWT (xác thực bằng Refresh, Access token)
......- Xác thực Flask-Admin (tự động cấp cookie Admin token và xác thực)
......- Vô hiệu hóa token thủ công (vô hiệu hóa token của một người dùng đang đăng nhập cụ thể)
......- Xác thực địa chỉ email và đặt lại mật khẩu bằng email (email token)
Sử dụng tính năng thông qua docstring và decorator của Python
......- Định nghĩa route bắt buộc đăng nhập và route khuyến nghị đăng nhập
......- Định nghĩa và giới hạn tham số request (quản lý trường Required/Optional)
............- Kiểm tra đầu vào Header/Body/Query
......- Tài liệu hóa mô tả route / tham số request / các phản hồi có thể có ở route đó
Xuất tài liệu
......- Xuất thành tài liệu OpenAPI 3.0 YAML
......- Tính năng tạo ER Diagram (xuất .dot)
Trong số này, phần đăng nhập (xác thực JWT) và tính năng tạo tài liệu OpenAPI 3 được mình tự viết trực tiếp bằng PyJWT và apispec.
Về phần tạo tài liệu OpenAPI 3, Flask-RESTful và Flask-RESTplus đang ở trạng thái không còn được duy trì, còn Flask-RESTX thì không đúng với cách sử dụng mà mình mong muốn.
Ngoài ra, phần đăng nhập hay xác thực thì Flask-Login là dựa trên session, còn Flask-JWT-Extended thì mình không biết là đã tồn tại (...), nên cuối cùng đã tự viết.
Dù sao thì vì mình vẫn là sinh viên đại học và làm khá gấp nên chú thích còn thiếu và mã nguồn cũng chưa sạch sẽ, nhưng mình sẽ rất cảm kích nếu mọi người xem đây như một PoC cho cách có thể định nghĩa API theo kiểu này!
(Thật ra mình vừa đăng một lần cách đây ít phút, nhưng ở phần tính năng thì toàn bộ khoảng trắng thụt lề đều bị mất hết (...), nên mình xóa đi và đăng lại. Mong mọi người thông cảm!)
Chưa có bình luận nào.