Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na anglickou verzi
Funkce správy zdrojů v NocoBase dokáže automaticky převádět existující databázové tabulky (kolekce) a asociace na zdroje. Obsahuje vestavěné typy operací, které vývojářům pomáhají rychle vytvářet operace se zdroji REST API. Na rozdíl od tradičních REST API se operace se zdroji v NocoBase nespoléhají na metody HTTP požadavků, ale určují konkrétní operaci k provedení prostřednictvím explicitních definic :action.
NocoBase automaticky převádí kolekce a asociace definované v databázi na zdroje. Například, pokud definujete dvě kolekce, posts a tags:
Tím se automaticky vygenerují následující zdroje:
posts zdrojtags zdrojposts.tags asociační zdrojPříklady požadavků:
| Metoda | Cesta | Operace |
|---|---|---|
GET | /api/posts:list | Dotaz na seznam |
GET | /api/posts:get/1 | Dotaz na jednu položku |
POST | /api/posts:create | Přidat novou |
POST | /api/posts:update/1 | Aktualizovat |
POST | /api/posts:destroy/1 | Smazat |
| Metoda | Cesta | Operace |
|---|---|---|
GET | /api/tags:list | Dotaz na seznam |
GET | /api/tags:get/1 | Dotaz na jednu položku |
POST | /api/tags:create | Přidat novou |
POST | /api/tags:update/1 | Aktualizovat |
POST | /api/tags:destroy/1 | Smazat |
| Metoda | Cesta | Operace |
|---|---|---|
GET | /api/posts/1/tags:list | Dotaz na všechny tagy spojené s postem |
GET | /api/posts/1/tags:get/1 | Dotaz na jeden tag pod postem |
POST | /api/posts/1/tags:create | Vytvořit jeden tag pod postem |
POST | /api/posts/1/tags:update/1 | Aktualizovat jeden tag pod postem |
POST | /api/posts/1/tags:destroy/1 | Smazat jeden tag pod postem |
POST | /api/posts/1/tags:add | Přidat spojené tagy k postu |
POST | /api/posts/1/tags:remove | Odebrat spojené tagy od postu |
POST | /api/posts/1/tags:set | Nastavit všechny spojené tagy pro post |
POST | /api/posts/1/tags:toggle | Přepnout spojení tagů pro post |
Operace se zdroji v NocoBase přímo nezávisí na metodách požadavků, ale určují operace prostřednictvím explicitních definic :action.
NocoBase nabízí bohaté vestavěné typy operací, které splňují různé obchodní potřeby.
| Název operace | Popis | Použitelné typy zdrojů | Metoda požadavku | Příklad cesty |
|---|---|---|---|---|
list | Dotaz na data seznamu | Všechny | GET/POST | /api/posts:list |
get | Dotaz na jednu položku dat | Všechny | GET/POST | /api/posts:get/1 |
create | Vytvořit nový záznam | Všechny | POST | /api/posts:create |
update | Aktualizovat záznam | Všechny | POST | /api/posts:update/1 |
destroy | Smazat záznam | Všechny | POST | /api/posts:destroy/1 |
firstOrCreate | Najít první záznam, vytvořit pokud neexistuje | Všechny | POST | /api/users:firstOrCreate |
updateOrCreate | Aktualizovat záznam, vytvořit pokud neexistuje | Všechny | POST | /api/users:updateOrCreate |
| Název operace | Popis | Použitelné typy vztahů | Příklad cesty |
|---|---|---|---|
add | Přidat asociaci | hasMany, belongsToMany | /api/posts/1/tags:add |
remove | Odebrat asociaci | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:remove |
set | Resetovat asociaci | hasOne, hasMany, belongsToMany, belongsTo | /api/posts/1/comments:set |
toggle | Přidat nebo odebrat asociaci | belongsToMany | /api/posts/1/tags:toggle |
Mezi běžné parametry operací patří:
filter: Podmínky dotazuvalues: Hodnoty k nastavenífields: Určení vrácených políappends: Zahrnout asociovaná dataexcept: Vyloučit polesort: Pravidla řazenípage, pageSize: Parametry stránkovánípaginate: Zda povolit stránkovánítree: Zda vrátit stromovou strukturuwhitelist, blacklist: Whitelist/blacklist políupdateAssociationValues: Zda aktualizovat asociované hodnotyNocoBase umožňuje registrovat dodatečné operace pro existující zdroje. Můžete použít registerActionHandlers k přizpůsobení operací pro všechny nebo specifické zdroje.
Příklady požadavků:
Pravidlo pojmenování: resourceName:actionName, při zahrnutí asociací použijte tečkovou syntaxi (posts.comments).
Pokud potřebujete poskytovat zdroje, které nesouvisí s kolekcemi, můžete je definovat pomocí metody resourceManager.define:
Metody požadavků jsou konzistentní s automaticky generovanými zdroji:
GET /api/app:getInfoPOST /api/app:getInfo (standardně podporuje GET/POST)Použijte metodu resourceManager.use() k registraci globálního middleware. Například:
Globální logovací middleware
Možnost vstoupit do middleware nebo akce vrstvy resourceManager znamená, že daný zdroj musí existovat.
ctx.action.actionName: Název operacectx.action.resourceName: Může být kolekce nebo asociacectx.action.params: Parametry operaceAktuální objekt zdroje dat.
Aktuální objekt repozitáře.
resourceManager patří ke zdroji dat a operace lze registrovat samostatně pro různé zdroje dat.
Pro hlavní zdroj dat můžete přímo použít app.resourceManager:
Pro ostatní zdroje dat můžete získat konkrétní instanci zdroje dat prostřednictvím dataSourceManager a použít resourceManager této instance:
Pokud potřebujete provést stejné operace na všech přidaných zdrojích dat, můžete použít metodu dataSourceManager.afterAddDataSource k iteraci, čímž zajistíte, že resourceManager každého zdroje dat bude moci registrovat odpovídající operace: