Middleware
O middleware do NocoBase Server é essencialmente um middleware Koa. Você pode manipular o objeto ctx para lidar com requisições e respostas, assim como faria no Koa. No entanto, como o NocoBase precisa gerenciar a lógica em diferentes camadas de negócio, agrupar todo o middleware em um só lugar tornaria a manutenção e o gerenciamento muito difíceis.
Por isso, o NocoBase divide o middleware em quatro níveis:
-
Middleware de Nível de Fonte de Dados:
app.dataSourceManager.use()Afeta apenas requisições para uma fonte de dados específica, sendo comumente usado para lógica de conexão de banco de dados, validação de campos ou processamento de transações para essa fonte de dados. -
Middleware de Nível de Recurso:
app.resourceManager.use()É eficaz apenas para recursos (Resource) definidos, sendo adequado para lidar com lógica de nível de recurso, como permissões de dados, formatação, etc. -
Middleware de Nível de Permissão:
app.acl.use()Executa antes das verificações de permissão, usado para verificar permissões ou funções de usuário. -
Middleware de Nível de Aplicação:
app.use()Executa para cada requisição, sendo adequado para registro de logs, tratamento geral de erros, processamento de respostas, etc.
Registro de Middleware
O middleware é geralmente registrado no método load do plugin, por exemplo:
Ordem de Execução
A ordem de execução do middleware é a seguinte:
- Primeiro, executa o middleware de permissão adicionado por
acl.use(). - Em seguida, executa o middleware de recurso adicionado por
resourceManager.use(). - Depois, executa o middleware de fonte de dados adicionado por
dataSourceManager.use(). - Por fim, executa o middleware de aplicação adicionado por
app.use().

