Esta documentación ha sido traducida automáticamente por IA.
La funcionalidad de gestión de recursos de NocoBase puede convertir automáticamente las colecciones (tablas de datos) y asociaciones existentes en recursos. Incluye varios tipos de operaciones para ayudar a los desarrolladores a construir rápidamente operaciones de recursos para APIs REST. A diferencia de las APIs REST tradicionales, las operaciones de recursos de NocoBase no dependen de los métodos de solicitud HTTP, sino que determinan la operación específica a ejecutar mediante la definición explícita de :action.
NocoBase convierte automáticamente las colecciones y asociaciones definidas en la base de datos en recursos. Por ejemplo, si define dos colecciones, posts y tags:
Esto generará automáticamente los siguientes recursos:
poststagsposts.tagsEjemplos de solicitud:
| Método | Ruta | Operación |
|---|---|---|
GET | /api/posts:list | Consultar lista |
GET | /api/posts:get/1 | Consultar un solo registro |
POST | /api/posts:create | Crear |
POST | /api/posts:update/1 | Actualizar |
POST | /api/posts:destroy/1 | Eliminar |
| Método | Ruta | Operación |
|---|---|---|
GET | /api/tags:list | Consultar lista |
GET | /api/tags:get/1 | Consultar un solo registro |
POST | /api/tags:create | Crear |
POST | /api/tags:update/1 | Actualizar |
POST | /api/tags:destroy/1 | Eliminar |
| Método | Ruta | Operación |
|---|---|---|
GET | /api/posts/1/tags:list | Consultar todas las tags asociadas a un post |
GET | /api/posts/1/tags:get/1 | Consultar una sola tag de un post |
POST | /api/posts/1/tags:create | Crear una sola tag para un post |
POST | /api/posts/1/tags:update/1 | Actualizar una sola tag de un post |
POST | /api/posts/1/tags:destroy/1 | Eliminar una sola tag de un post |
POST | /api/posts/1/tags:add | Añadir tags asociadas a un post |
POST | /api/posts/1/tags:remove | Eliminar tags asociadas de un post |
POST | /api/posts/1/tags:set | Establecer todas las tags asociadas para un post |
POST | /api/posts/1/tags:toggle | Alternar la asociación de tags para un post |
Las operaciones de recursos de NocoBase no dependen directamente de los métodos de solicitud, sino que determinan las operaciones mediante definiciones explícitas de :action.
NocoBase ofrece una amplia variedad de tipos de operaciones integradas para satisfacer diversas necesidades de negocio.
| Nombre de la operación | Descripción | Tipos de recursos aplicables | Método de solicitud | Ruta de ejemplo |
|---|---|---|---|---|
list | Consultar datos de la lista | Todos | GET/POST | /api/posts:list |
get | Consultar un solo registro de datos | Todos | GET/POST | /api/posts:get/1 |
create | Crear un nuevo registro | Todos | POST | /api/posts:create |
update | Actualizar un registro | Todos | POST | /api/posts:update/1 |
destroy | Eliminar un registro | Todos | POST | /api/posts:destroy/1 |
firstOrCreate | Buscar el primer registro, crear si no existe | Todos | POST | /api/users:firstOrCreate |
updateOrCreate | Actualizar un registro, crear si no existe | Todos | POST | /api/users:updateOrCreate |
| Nombre de la operación | Descripción | Tipos de relación aplicables | Ruta de ejemplo |
|---|---|---|---|
add | Añadir asociación | hasMany, belongsToMany | /api/posts/1/tags:add |
remove | Eliminar asociación | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:remove |
set | Restablecer asociación | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:set |
toggle | Añadir o eliminar asociación | belongsToMany | /api/posts/1/tags:toggle |
Los parámetros de operación comunes incluyen:
filter: Condiciones de consultavalues: Valores a establecerfields: Campos a devolverappends: Incluir datos asociadosexcept: Excluir campossort: Reglas de ordenaciónpage, pageSize: Parámetros de paginaciónpaginate: Si habilitar la paginacióntree: Si devolver una estructura de árbolwhitelist, blacklist: Lista blanca/negra de camposupdateAssociationValues: Si actualizar los valores de asociaciónNocoBase permite registrar operaciones adicionales para recursos existentes. Puede usar registerActionHandlers para personalizar operaciones para todos los recursos o para recursos específicos.
Ejemplos de solicitud:
Regla de nomenclatura: resourceName:actionName. Use la sintaxis de puntos (posts.comments) cuando incluya asociaciones.
Si necesita proporcionar recursos que no están relacionados con las colecciones (tablas de datos), puede definirlos utilizando el método resourceManager.define:
Los métodos de solicitud son consistentes con los recursos generados automáticamente:
GET /api/app:getInfoPOST /api/app:getInfo (admite GET/POST por defecto)Utilice el método resourceManager.use() para registrar middleware global. Por ejemplo:
Middleware de registro global
Poder acceder al middleware o a la acción de la capa resourceManager significa que el recurso debe existir.
ctx.action.actionName: Nombre de la operaciónctx.action.resourceName: Puede ser una colección o una asociaciónctx.action.params: Parámetros de la operaciónEl objeto de la fuente de datos actual.
El objeto de repositorio actual.
resourceManager para diferentes fuentes de datosEl resourceManager pertenece a una fuente de datos, y las operaciones se pueden registrar por separado para diferentes fuentes de datos.
Para la fuente de datos principal, puede usar directamente app.resourceManager para operar:
Para otras fuentes de datos, puede obtener una instancia específica de fuente de datos a través de dataSourceManager y usar el resourceManager de esa instancia para operar:
Si necesita realizar las mismas operaciones en todas las fuentes de datos añadidas, puede usar el método dataSourceManager.afterAddDataSource para iterar, asegurándose de que el resourceManager de cada fuente de datos pueda registrar las operaciones correspondientes: