Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen
NocoBase:s resurshanteringsfunktion kan automatiskt omvandla befintliga datatabeller (samlingar) och associationer till resurser, och har inbyggda operationstyper som hjälper utvecklare att snabbt bygga REST API-resursoperationer. Till skillnad från traditionella REST API:er förlitar sig NocoBase:s resursoperationer inte på HTTP-förfrågningsmetoder, utan bestämmer den specifika operationen som ska utföras genom att explicit definiera :action.
NocoBase omvandlar automatiskt samlingar och associationer som definieras i databasen till resurser. Till exempel, om ni definierar två samlingar, posts och tags:
Detta kommer automatiskt att generera följande resurser:
posts-resurstags-resursposts.tags-associationsresursExempel på förfrågningar:
| Förfrågningsmetod | Sökväg | Operation |
|---|---|---|
GET | /api/posts:list | Hämta lista |
GET | /api/posts:get/1 | Hämta enstaka |
POST | /api/posts:create | Skapa ny |
POST | /api/posts:update/1 | Uppdatera |
POST | /api/posts:destroy/1 | Radera |
| Förfrågningsmetod | Sökväg | Operation |
|---|---|---|
GET | /api/tags:list | Hämta lista |
GET | /api/tags:get/1 | Hämta enstaka |
POST | /api/tags:create | Skapa ny |
POST | /api/tags:update/1 | Uppdatera |
POST | /api/tags:destroy/1 | Radera |
| Förfrågningsmetod | Sökväg | Operation |
|---|---|---|
GET | /api/posts/1/tags:list | Hämta alla tags associerade med ett post |
GET | /api/posts/1/tags:get/1 | Hämta en enstaka tag under ett post |
POST | /api/posts/1/tags:create | Skapa en enstaka tag under ett post |
POST | /api/posts/1/tags:update/1 | Uppdatera en enstaka tag under ett post |
POST | /api/posts/1/tags:destroy/1 | Radera en enstaka tag under ett post |
POST | /api/posts/1/tags:add | Lägg till associerade tags till ett post |
POST | /api/posts/1/tags:remove | Ta bort associerade tags från ett post |
POST | /api/posts/1/tags:set | Ställ in alla associerade tags för ett post |
POST | /api/posts/1/tags:toggle | Växla tags-association för ett post |
NocoBase:s resursoperationer är inte direkt beroende av förfrågningsmetoder, utan bestämmer operationer genom explicita :action-definitioner.
NocoBase tillhandahåller ett brett utbud av inbyggda operationstyper för att möta olika affärsbehov.
| Operationsnamn | Beskrivning | Tillämpliga resurstyper | Förfrågningsmetod | Exempel på sökväg |
|---|---|---|---|---|
list | Hämta listdata | Alla | GET/POST | /api/posts:list |
get | Hämta enstaka data | Alla | GET/POST | /api/posts:get/1 |
create | Skapa ny post | Alla | POST | /api/posts:create |
update | Uppdatera post | Alla | POST | /api/posts:update/1 |
destroy | Radera post | Alla | POST | /api/posts:destroy/1 |
firstOrCreate | Hitta första posten, skapa om den inte finns | Alla | POST | /api/users:firstOrCreate |
updateOrCreate | Uppdatera post, skapa om den inte finns | Alla | POST | /api/users:updateOrCreate |
| Operationsnamn | Beskrivning | Tillämpliga relationstyper | Exempel på sökväg |
|---|---|---|---|
add | Lägg till association | hasMany, belongsToMany | /api/posts/1/tags:add |
remove | Ta bort association | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:remove |
set | Återställ association | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:set |
toggle | Lägg till eller ta bort association | belongsToMany | /api/posts/1/tags:toggle |
Vanliga operationsparametrar inkluderar:
filter: Sökfiltervalues: Värden att ställa infields: Ange fält som ska returnerasappends: Inkludera associerad dataexcept: Exkludera fältsort: Sorteringsreglerpage, pageSize: Pagineringparametrarpaginate: Om paginering ska aktiverastree: Om trädstruktur ska returneraswhitelist, blacklist: Vitlista/svartlista för fältupdateAssociationValues: Om associerade värden ska uppdaterasNocoBase tillåter registrering av ytterligare operationer för befintliga resurser. Ni kan använda registerActionHandlers för att anpassa operationer för alla eller specifika resurser.
Exempel på förfrågningar:
Namngivningsregel: resourceName:actionName, använd punktnotation (posts.comments) när associationer inkluderas.
Om ni behöver tillhandahålla resurser som är oberoende av samlingar, kan ni använda metoden resourceManager.define för att definiera dem:
Förfrågningsmetoderna överensstämmer med automatiskt genererade resurser:
GET /api/app:getInfoPOST /api/app:getInfo (stöder GET/POST som standard)Använd metoden resourceManager.use() för att registrera globala mellanprogram. Till exempel:
Globalt loggningsmellanprogram
Att kunna komma åt mellanprogram eller åtgärder på resourceManager-nivån innebär att resursen måste existera.
ctx.action.actionName: Operationsnamnctx.action.resourceName: Kan vara en samling eller associationctx.action.params: OperationsparametrarDet aktuella datakälleobjektet.
Det aktuella repository-objektet.
resourceManager tillhör en datakälla, och operationer kan registreras separat för olika datakällor.
För huvuddatakällan kan ni direkt använda app.resourceManager för operationer:
För andra datakällor kan ni hämta en specifik datakälleinstans via dataSourceManager och använda den instansens resourceManager för operationer:
Om ni behöver utföra samma operationer på alla tillagda datakällor, kan ni använda metoden dataSourceManager.afterAddDataSource för att iterera, vilket säkerställer att varje datakällas resourceManager kan registrera de motsvarande operationerna: