Cette documentation a été traduite automatiquement par IA.
La fonctionnalité de gestion des ressources de NocoBase peut convertir automatiquement les collections et les associations existantes en ressources. Elle intègre également plusieurs types d'opérations pour vous aider à construire rapidement des opérations de ressources pour les API REST. Contrairement aux API REST traditionnelles, les opérations de ressources de NocoBase ne dépendent pas des méthodes de requête HTTP, mais déterminent l'opération spécifique à exécuter via des définitions explicites de :action.
NocoBase convertit automatiquement les collection et les association définies dans la base de données en ressources. Par exemple, si vous définissez deux collections, posts et tags :
Ceci générera automatiquement les ressources suivantes :
poststagsposts.tagsExemples de requêtes :
| Méthode | Chemin | Opération |
|---|---|---|
GET | /api/posts:list | Lister |
GET | /api/posts:get/1 | Obtenir un élément |
POST | /api/posts:create | Créer |
POST | /api/posts:update/1 | Mettre à jour |
POST | /api/posts:destroy/1 | Supprimer |
| Méthode | Chemin | Opération |
|---|---|---|
GET | /api/tags:list | Lister |
GET | /api/tags:get/1 | Obtenir un élément |
POST | /api/tags:create | Créer |
POST | /api/tags:update/1 | Mettre à jour |
POST | /api/tags:destroy/1 | Supprimer |
| Méthode | Chemin | Opération |
|---|---|---|
GET | /api/posts/1/tags:list | Interroger tous les tags associés à un post |
GET | /api/posts/1/tags:get/1 | Interroger un seul tag sous un post |
POST | /api/posts/1/tags:create | Créer un seul tag sous un post |
POST | /api/posts/1/tags:update/1 | Mettre à jour un seul tag sous un post |
POST | /api/posts/1/tags:destroy/1 | Supprimer un seul tag sous un post |
POST | /api/posts/1/tags:add | Ajouter des tags associés à un post |
POST | /api/posts/1/tags:remove | Supprimer des tags associés d'un post |
POST | /api/posts/1/tags:set | Définir tous les tags associés pour un post |
POST | /api/posts/1/tags:toggle | Basculer l'association des tags pour un post |
Les opérations de ressources NocoBase ne dépendent pas directement des méthodes de requête, mais déterminent les opérations via des définitions explicites de :action.
NocoBase propose de nombreux types d'opérations intégrées pour répondre à divers besoins métier.
| Nom de l'opération | Description | Types de ressources applicables | Méthode de requête | Exemple de chemin |
|---|---|---|---|---|
list | Interroge les données d'une liste | Toutes | GET/POST | /api/posts:list |
get | Interroge un seul enregistrement | Toutes | GET/POST | /api/posts:get/1 |
create | Crée un nouvel enregistrement | Toutes | POST | /api/posts:create |
update | Met à jour un enregistrement | Toutes | POST | /api/posts:update/1 |
destroy | Supprime un enregistrement | Toutes | POST | /api/posts:destroy/1 |
firstOrCreate | Trouve le premier enregistrement, le crée s'il n'existe pas | Toutes | POST | /api/users:firstOrCreate |
updateOrCreate | Met à jour un enregistrement, le crée s'il n'existe pas | Toutes | POST | /api/users:updateOrCreate |
| Nom de l'opération | Description | Types de relations applicables | Exemple de chemin |
|---|---|---|---|
add | Ajoute une association | hasMany, belongsToMany | /api/posts/1/tags:add |
remove | Supprime une association | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:remove |
set | Réinitialise une association | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:set |
toggle | Ajoute ou supprime une association | belongsToMany | /api/posts/1/tags:toggle |
Les paramètres d'opération courants incluent :
filter : Conditions de requêtevalues : Valeurs à définirfields : Spécifie les champs à retournerappends : Inclut les données associéesexcept : Exclut les champssort : Règles de tripage, pageSize : Paramètres de paginationpaginate : Indique si la pagination est activéetree : Indique si une structure arborescente doit être retournéewhitelist, blacklist : Liste blanche/noire de champsupdateAssociationValues : Indique si les valeurs d'association doivent être mises à jourNocoBase permet d'enregistrer des opérations supplémentaires pour les ressources existantes. Vous pouvez utiliser registerActionHandlers pour personnaliser les opérations pour toutes les ressources ou pour des ressources spécifiques.
Exemples de requêtes :
Règle de nommage : resourceName:actionName. Utilisez la syntaxe à points (posts.comments) lorsque vous incluez des associations.
Si vous avez besoin de fournir des ressources qui ne sont pas liées à des collections, vous pouvez les définir en utilisant la méthode resourceManager.define :
Les méthodes de requête sont cohérentes avec les ressources générées automatiquement :
GET /api/app:getInfoPOST /api/app:getInfo (prend en charge GET/POST par défaut)Utilisez la méthode resourceManager.use() pour enregistrer un middleware global. Par exemple :
Middleware de journalisation global
Le fait de pouvoir accéder au middleware ou à l'action de la couche resourceManager signifie que la ressource existe nécessairement.
ctx.action.actionName : Nom de l'opérationctx.action.resourceName : Peut être une collection ou une associationctx.action.params : Paramètres de l'opérationL'objet source de données actuel.
L'objet repository actuel.
Le resourceManager appartient à une source de données, et vous pouvez enregistrer des opérations séparément pour différentes sources de données.
Pour la source de données principale, vous pouvez utiliser directement app.resourceManager :
Pour les autres sources de données, vous pouvez obtenir une instance de source de données spécifique via dataSourceManager et utiliser le resourceManager de cette instance :
Si vous devez effectuer les mêmes opérations sur toutes les sources de données ajoutées, vous pouvez utiliser la méthode dataSourceManager.afterAddDataSource pour itérer, en vous assurant que le resourceManager de chaque source de données peut enregistrer les opérations correspondantes :