Middleware
Middleware của NocoBase Server về bản chất là middleware Koa, bạn có thể thao tác đối tượng ctx để xử lý request và response giống như trong Koa. Tuy nhiên do NocoBase cần quản lý logic của các tầng nghiệp vụ khác nhau, nếu tất cả middleware đặt cùng nhau sẽ rất khó bảo trì.
Để giải quyết, NocoBase chia middleware thành bốn cấp:
-
Middleware cấp nguồn dữ liệu:
app.dataSourceManager.use()Chỉ tác động lên request của một nguồn dữ liệu nào đó, thường được dùng cho logic kết nối database, validate Field hoặc xử lý transaction của nguồn dữ liệu đó. -
Middleware cấp resource:
app.resourceManager.use()Chỉ có hiệu lực với resource đã được định nghĩa, phù hợp để xử lý logic cấp resource, như quyền dữ liệu, format, v.v. -
Middleware cấp quyền:
app.acl.use()Thực thi trước khi đánh giá quyền, dùng để xác minh quyền hoặc role của người dùng. -
Middleware cấp ứng dụng:
app.use()Thực thi cho mỗi request, phù hợp để ghi log, xử lý lỗi chung, xử lý response, v.v.
Đăng ký middleware
Middleware thường được đăng ký trong phương thức load của Plugin, ví dụ:
Thứ tự thực thi
Thứ tự thực thi middleware như sau:
- Trước tiên thực thi middleware quyền được thêm bởi
acl.use() - Tiếp theo thực thi middleware resource được thêm bởi
resourceManager.use() - Tiếp theo thực thi middleware nguồn dữ liệu được thêm bởi
dataSourceManager.use() - Cuối cùng thực thi middleware ứng dụng được thêm bởi
app.use()

