Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie
De resourcebeheerfunctie van NocoBase kan bestaande collecties en associaties automatisch omzetten in resources. Het biedt ingebouwde bewerkingstypen om ontwikkelaars te helpen snel REST API-resourcebewerkingen te bouwen. In tegenstelling tot traditionele REST API's zijn NocoBase-resourcebewerkingen niet afhankelijk van HTTP-aanvraagmethoden, maar bepalen ze de specifieke uit te voeren bewerking via expliciete :action-definities.
NocoBase zet automatisch collecties en associaties die in de database zijn gedefinieerd om in resources. Stel dat u bijvoorbeeld twee collecties definieert, posts en tags:
Dit genereert automatisch de volgende resources:
posts resourcetags resourceposts.tags associatie resourceAanvraagvoorbeelden:
| Methode | Pad | Bewerking |
|---|---|---|
GET | /api/posts:list | Lijst opvragen |
GET | /api/posts:get/1 | Enkel item opvragen |
POST | /api/posts:create | Toevoegen |
POST | /api/posts:update/1 | Bijwerken |
POST | /api/posts:destroy/1 | Verwijderen |
| Methode | Pad | Bewerking |
|---|---|---|
GET | /api/tags:list | Lijst opvragen |
GET | /api/tags:get/1 | Enkel item opvragen |
POST | /api/tags:create | Toevoegen |
POST | /api/tags:update/1 | Bijwerken |
POST | /api/tags:destroy/1 | Verwijderen |
| Methode | Pad | Bewerking |
|---|---|---|
GET | /api/posts/1/tags:list | Alle tags opvragen die aan een post zijn gekoppeld |
GET | /api/posts/1/tags:get/1 | Eén tag opvragen onder een post |
POST | /api/posts/1/tags:create | Eén tag aanmaken onder een post |
POST | /api/posts/1/tags:update/1 | Eén tag bijwerken onder een post |
POST | /api/posts/1/tags:destroy/1 | Eén tag verwijderen onder een post |
POST | /api/posts/1/tags:add | Gekoppelde tags toevoegen aan een post |
POST | /api/posts/1/tags:remove | Gekoppelde tags verwijderen van een post |
POST | /api/posts/1/tags:set | Alle gekoppelde tags instellen voor een post |
POST | /api/posts/1/tags:toggle | De tags-associatie voor een post wisselen |
NocoBase-resourcebewerkingen zijn niet direct afhankelijk van aanvraagmethoden, maar bepalen de uit te voeren bewerkingen via expliciete :action-definities.
NocoBase biedt een breed scala aan ingebouwde bewerkingstypen om aan diverse bedrijfsbehoeften te voldoen.
| Bewerking | Beschrijving | Toepasselijke resourcetypen | Aanvraagmethode | Voorbeeldpad |
|---|---|---|---|---|
list | Lijstgegevens opvragen | Alle | GET/POST | /api/posts:list |
get | Enkele gegevens opvragen | Alle | GET/POST | /api/posts:get/1 |
create | Nieuw record aanmaken | Alle | POST | /api/posts:create |
update | Record bijwerken | Alle | POST | /api/posts:update/1 |
destroy | Record verwijderen | Alle | POST | /api/posts:destroy/1 |
firstOrCreate | Eerste record zoeken, aanmaken indien niet aanwezig | Alle | POST | /api/users:firstOrCreate |
updateOrCreate | Record bijwerken, aanmaken indien niet aanwezig | Alle | POST | /api/users:updateOrCreate |
| Bewerking | Beschrijving | Toepasselijke relatietypen | Voorbeeldpad |
|---|---|---|---|
add | Associatie toevoegen | hasMany, belongsToMany | /api/posts/1/tags:add |
remove | Associatie verwijderen | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:remove |
set | Associatie resetten | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:set |
toggle | Associatie toevoegen of verwijderen | belongsToMany | /api/posts/1/tags:toggle |
Veelvoorkomende bewerkingparameters zijn:
filter: Zoekvoorwaardenvalues: In te stellen waardenfields: Op te geven velden voor retourappends: Gekoppelde gegevens opnemenexcept: Velden uitsluitensort: Sorteerregelspage, pageSize: Paginatieparameterspaginate: Paginatie inschakelentree: Boomstructuur retournerenwhitelist, blacklist: Whitelist/blacklist voor veldenupdateAssociationValues: Associatiewaarden bijwerkenNocoBase maakt het mogelijk om extra bewerkingen te registreren voor bestaande resources. U kunt registerActionHandlers gebruiken om bewerkingen aan te passen voor alle of specifieke resources.
Aanvraagvoorbeelden:
Naamgevingsregel: resourceName:actionName. Gebruik de puntnotatie (posts.comments) wanneer associaties zijn inbegrepen.
Als u resources wilt aanbieden die niet gerelateerd zijn aan collecties, kunt u deze definiëren met de methode resourceManager.define:
Aanvraagmethoden komen overeen met automatisch gegenereerde resources:
GET /api/app:getInfoPOST /api/app:getInfo (ondersteunt standaard zowel GET als POST)Gebruik de methode resourceManager.use() om globale middleware te registreren. Bijvoorbeeld:
Globale logging-middleware
Wanneer u de middleware of actie van de resourceManager-laag kunt betreden, betekent dit dat de resource gegarandeerd bestaat.
ctx.action.actionName: Naam van de bewerkingctx.action.resourceName: Kan een collectie of associatie zijnctx.action.params: Parameters van de bewerkingHet huidige gegevensbron-object.
Het huidige repository-object.
resourceManager behoort tot een gegevensbron, en bewerkingen kunnen afzonderlijk voor verschillende gegevensbronnen worden geregistreerd.
Voor de hoofdgegevensbron kunt u direct app.resourceManager gebruiken om bewerkingen uit te voeren:
Voor andere gegevensbronnen kunt u via dataSourceManager een specifieke gegevensbron-instantie ophalen en de resourceManager van die instantie gebruiken om bewerkingen uit te voeren:
Als u dezelfde bewerkingen op alle toegevoegde gegevensbronnen wilt uitvoeren, kunt u de methode dataSourceManager.afterAddDataSource gebruiken om deze te doorlopen. Dit zorgt ervoor dat de resourceManager van elke gegevensbron de bijbehorende bewerkingen kan registreren: