Esta documentação foi traduzida automaticamente por IA.
A funcionalidade de gerenciamento de recursos do NocoBase pode converter automaticamente coleções e associações existentes em recursos, com tipos de operação integrados para ajudar desenvolvedores a construir rapidamente operações de recursos REST API. Um pouco diferente das REST APIs tradicionais, as operações de recurso do NocoBase não dependem de métodos de requisição HTTP, mas determinam a operação específica a ser executada através de definições explícitas de :action.
NocoBase converte automaticamente collection e association definidas no banco de dados em recursos. Por exemplo, ao definir duas coleções, posts e tags:
Isso gerará automaticamente os seguintes recursos:
poststagsposts.tagsExemplos de requisição:
| Método | Caminho | Operação |
|---|---|---|
GET | /api/posts:list | Consultar lista |
GET | /api/posts:get/1 | Consultar item único |
POST | /api/posts:create | Adicionar novo |
POST | /api/posts:update/1 | Atualizar |
POST | /api/posts:destroy/1 | Excluir |
| Método | Caminho | Operação |
|---|---|---|
GET | /api/tags:list | Consultar lista |
GET | /api/tags:get/1 | Consultar item único |
POST | /api/tags:create | Adicionar novo |
POST | /api/tags:update/1 | Atualizar |
POST | /api/tags:destroy/1 | Excluir |
| Método | Caminho | Operação |
|---|---|---|
GET | /api/posts/1/tags:list | Consultar todas as tags associadas a um post |
GET | /api/posts/1/tags:get/1 | Consultar uma única tag de um post |
POST | /api/posts/1/tags:create | Criar uma única tag para um post |
POST | /api/posts/1/tags:update/1 | Atualizar uma única tag de um post |
POST | /api/posts/1/tags:destroy/1 | Excluir uma única tag de um post |
POST | /api/posts/1/tags:add | Adicionar tags associadas a um post |
POST | /api/posts/1/tags:remove | Remover tags associadas de um post |
POST | /api/posts/1/tags:set | Definir todas as tags associadas para um post |
POST | /api/posts/1/tags:toggle | Alternar associação de tags para um post |
As operações de recurso do NocoBase não dependem diretamente dos métodos de requisição, mas determinam as operações através de definições explícitas de :action.
NocoBase oferece diversos tipos de operações integradas para atender a várias necessidades de negócio.
| Nome da Operação | Descrição | Tipos de Recurso Aplicáveis | Método de Requisição | Caminho de Exemplo |
|---|---|---|---|---|
list | Consultar dados da lista | Todos | GET/POST | /api/posts:list |
get | Consultar dados de um item único | Todos | GET/POST | /api/posts:get/1 |
create | Criar novo registro | Todos | POST | /api/posts:create |
update | Atualizar registro | Todos | POST | /api/posts:update/1 |
destroy | Excluir registro | Todos | POST | /api/posts:destroy/1 |
firstOrCreate | Encontrar o primeiro registro, criar se não existir | Todos | POST | /api/users:firstOrCreate |
updateOrCreate | Atualizar registro, criar se não existir | Todos | POST | /api/users:updateOrCreate |
| Nome da Operação | Descrição | Tipos de Relacionamento Aplicáveis | Caminho de Exemplo |
|---|---|---|---|
add | Adicionar associação | hasMany, belongsToMany | /api/posts/1/tags:add |
remove | Remover associação | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:remove |
set | Redefinir associação | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:set |
toggle | Adicionar ou remover associação | belongsToMany | /api/posts/1/tags:toggle |
Os parâmetros de operação comuns incluem:
filter: Condições de consultavalues: Valores a serem definidosfields: Campos a serem retornadosappends: Incluir dados associadosexcept: Excluir campossort: Regras de ordenaçãopage, pageSize: Parâmetros de paginaçãopaginate: Se deve habilitar a paginaçãotree: Se deve retornar estrutura de árvorewhitelist, blacklist: Lista branca/negra de camposupdateAssociationValues: Se deve atualizar valores de associaçãoNocoBase permite registrar operações adicionais para recursos existentes. Você pode usar registerActionHandlers para personalizar operações para todos os recursos ou para recursos específicos.
Exemplos de requisição:
Regra de nomenclatura: resourceName:actionName. Use a sintaxe de ponto (posts.comments) ao incluir associações.
Se você precisar fornecer recursos não relacionados a coleções, pode usar o método resourceManager.define para defini-los:
Os métodos de requisição são consistentes com os recursos gerados automaticamente:
GET /api/app:getInfoPOST /api/app:getInfo (suporta GET/POST por padrão)Use o método resourceManager.use() para registrar middleware global. Por exemplo:
Middleware de log global
Ser capaz de entrar no middleware ou action da camada resourceManager significa que o recurso deve existir.
ctx.action.actionName: Nome da operaçãoctx.action.resourceName: Pode ser uma coleção ou associaçãoctx.action.params: Parâmetros da operaçãoO objeto da fonte de dados atual.
O objeto de repositório atual.
resourceManager pertence a uma fonte de dados, e as operações podem ser registradas separadamente para diferentes fontes de dados.
Para a fonte de dados principal, você pode usar diretamente app.resourceManager para operar:
Para outras fontes de dados, você pode obter uma instância específica da fonte de dados através de dataSourceManager e usar o resourceManager dessa instância para operar:
Se você precisar executar as mesmas operações em todas as fontes de dados adicionadas, pode usar o método dataSourceManager.afterAddDataSource para iterar, garantindo que o resourceManager de cada fonte de dados possa registrar as operações correspondentes: