Diese Dokumentation wurde automatisch von KI übersetzt.
Die Ressourcenverwaltung von NocoBase kann bestehende Datenbanktabellen (Sammlungen) und Verknüpfungen (Associations) automatisch in Ressourcen umwandeln. Sie bietet zudem integrierte Operationstypen, die Entwicklern helfen, REST-API-Ressourcenoperationen schnell zu erstellen. Im Gegensatz zu traditionellen REST-APIs basieren NocoBase-Ressourcenoperationen nicht auf HTTP-Anfragemethoden, sondern definieren die auszuführende Operation explizit über :action.
NocoBase wandelt in der Datenbank definierte Sammlungen und Associations automatisch in Ressourcen um. Definieren Sie beispielsweise zwei Sammlungen, posts und tags:
Dadurch werden automatisch die folgenden Ressourcen generiert:
posts-Ressourcetags-Ressourceposts.tags-AssociationsressourceAnfragebeispiele:
| Methode | Pfad | Operation |
|---|---|---|
GET | /api/posts:list | Liste abfragen |
GET | /api/posts:get/1 | Einzelnen Datensatz abfragen |
POST | /api/posts:create | Neu hinzufügen |
POST | /api/posts:update/1 | Aktualisieren |
POST | /api/posts:destroy/1 | Löschen |
| Methode | Pfad | Operation |
|---|---|---|
GET | /api/tags:list | Liste abfragen |
GET | /api/tags:get/1 | Einzelnen Datensatz abfragen |
POST | /api/tags:create | Neu hinzufügen |
POST | /api/tags:update/1 | Aktualisieren |
POST | /api/tags:destroy/1 | Löschen |
| Methode | Pfad | Operation |
|---|---|---|
GET | /api/posts/1/tags:list | Alle tags abfragen, die mit einem post verknüpft sind |
GET | /api/posts/1/tags:get/1 | Einen einzelnen tag unter einem post abfragen |
POST | /api/posts/1/tags:create | Einen einzelnen tag unter einem post erstellen |
POST | /api/posts/1/tags:update/1 | Einen einzelnen tag unter einem post aktualisieren |
POST | /api/posts/1/tags:destroy/1 | Einen einzelnen tag unter einem post löschen |
POST | /api/posts/1/tags:add | Verknüpfte tags zu einem post hinzufügen |
POST | /api/posts/1/tags:remove | Verknüpfte tags von einem post entfernen |
POST | /api/posts/1/tags:set | Alle verknüpften tags für einen post festlegen |
POST | /api/posts/1/tags:toggle | Die tags-Verknüpfung für einen post umschalten |
NocoBase-Ressourcenoperationen hängen nicht direkt von den Anfragemethoden ab, sondern bestimmen die auszuführenden Operationen durch explizite :action-Definitionen.
NocoBase bietet eine Vielzahl integrierter Operationstypen, um unterschiedliche Geschäftsanforderungen zu erfüllen.
| Operationsname | Beschreibung | Anwendbare Ressourcentypen | Anfragemethode | Beispielpfad |
|---|---|---|---|---|
list | Listendaten abfragen | Alle | GET/POST | /api/posts:list |
get | Einzelnen Datensatz abfragen | Alle | GET/POST | /api/posts:get/1 |
create | Neuen Datensatz erstellen | Alle | POST | /api/posts:create |
update | Datensatz aktualisieren | Alle | POST | /api/posts:update/1 |
destroy | Datensatz löschen | Alle | POST | /api/posts:destroy/1 |
firstOrCreate | Ersten Datensatz finden, falls nicht vorhanden, erstellen | Alle | POST | /api/users:firstOrCreate |
updateOrCreate | Datensatz aktualisieren, falls nicht vorhanden, erstellen | Alle | POST | /api/users:updateOrCreate |
| Operationsname | Beschreibung | Anwendbare Beziehungstypen | Beispielpfad |
|---|---|---|---|
add | Verknüpfung hinzufügen | hasMany, belongsToMany | /api/posts/1/tags:add |
remove | Verknüpfung entfernen | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:remove |
set | Verknüpfung zurücksetzen | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:set |
toggle | Verknüpfung hinzufügen oder entfernen | belongsToMany | /api/posts/1/tags:toggle |
Häufig verwendete Operationsparameter sind:
filter: Abfragebedingungenvalues: Festzulegende Wertefields: Anzugebende Rückgabefelderappends: Verknüpfte Daten einschließenexcept: Felder ausschließensort: Sortierregelnpage, pageSize: Paginierungsparameterpaginate: Paginierung aktivierentree: Baumstruktur zurückgebenwhitelist, blacklist: Feld-Whitelist/BlacklistupdateAssociationValues: Verknüpfungswerte aktualisierenNocoBase ermöglicht das Registrieren zusätzlicher Operationen für bestehende Ressourcen. Sie können registerActionHandlers verwenden, um Operationen für alle oder bestimmte Ressourcen anzupassen.
Anfragebeispiele:
Namenskonvention: resourceName:actionName. Bei Verknüpfungen wird die Punktsyntax (posts.comments) verwendet.
Wenn Sie Ressourcen bereitstellen müssen, die nicht mit Datenbanktabellen verknüpft sind, können Sie diese mit der Methode resourceManager.define definieren:
Die Anfragemethoden sind konsistent mit den automatisch generierten Ressourcen:
GET /api/app:getInfoPOST /api/app:getInfo (unterstützt standardmäßig sowohl GET als auch POST)Verwenden Sie die Methode resourceManager.use(), um globale Middleware zu registrieren. Zum Beispiel:
Globale Logging-Middleware
Wenn Middleware oder Aktionen die resourceManager-Ebene erreichen können, bedeutet dies, dass die Ressource definitiv existiert.
ctx.action.actionName: Operationsnamectx.action.resourceName: Kann eine Sammlung oder Association seinctx.action.params: OperationsparameterDas aktuelle Datenquellenobjekt.
Das aktuelle Repository-Objekt.
resourceManager-Objekte für verschiedene DatenquellenresourceManager gehört zu einer Datenquelle; Operationen können für verschiedene Datenquellen separat registriert werden.
Für die Haupt-Datenquelle können Sie app.resourceManager direkt verwenden, um Operationen auszuführen:
Für andere Datenquellen können Sie über dataSourceManager eine spezifische Datenquelleninstanz abrufen und deren resourceManager für Operationen verwenden:
Wenn Sie dieselben Operationen für alle hinzugefügten Datenquellen ausführen möchten, können Sie die Methode dataSourceManager.afterAddDataSource verwenden, um diese zu durchlaufen und sicherzustellen, dass der resourceManager jeder Datenquelle die entsprechenden Operationen registrieren kann: