API (Application Programming Interface) je aplikačné rozhranie, ktoré umožňuje rôznym aplikáciám vzájomne komunikovať. Vďaka API si systémy dokážu vymieňať dáta a vykonávať úlohy bez toho, aby do nich musel zasahovať používateľ.
Jednoducho povedané, API funguje ako sprostredkovateľ v prípadoch, keď jedna aplikácia žiada druhú o informácie alebo o vykonanie akcie ako napríklad načítanie objednávky, vytvorenie faktúry alebo aktualizácia údajov.
Aké API podporuje Odoo?
Odoo podporuje niekoľko API protokolov, čím umožňuje komunikáciu s externými aplikáciami, e-commerce riešeniami, analytickými nástrojmi či webovými portálmi. Typy podporovaných API protokolov sú:
1. RPC API (Remote Procedure Call)
2. JSON-2 API
3. REST API
4. GraphQL API
1. RPC API
Odoo natívne podporuje RPC API (Remote Procedure Call) cez XML-RPC a JSON-RPC protokoly. Tento prístup umožňuje externe volať metódy Odoo modulov a pracovať s dátami napr. vytvárať, čítať alebo upravovať záznamy.
Zároveň, ale musím dodať, že Odoo považuje XML-RPC a JSON-RPC API za zastarané. Ich postupné odstránenie plánuje od verzie Odoo 20, ktorej uvedenie sa očakáva koncom roka 2026, pričom staršie protokoly v nej má nahradiť JSON-2 API.
Výhody RPC API:
- rýchle a nenáročne spracovanie volaní
- podpora plného rozsahu funkcií Odoo pre prácu s dátami umožňuje rýchle nasadenie bez dodatočných programovacích zásahov. Externá aplikácia má tak široký prístup k dátam a funkcionalite Odoo
Nevýhody RPC API:
- hrozia tu bezpečnostné riziká, pri nesprávnom nastavení oprávnení môže dôjsť k neúmyselným zásahom do dát
- všetky volania tečú cez jeden endpoint (url) čo v prípade veľkých aplikácií môže spôsobiť horšie škálovanie resp. monitoring
- keďže pracuje na úrovni funkcií (t. j. volá metódy backendu ako CREATE, SEARCH, DELETE a pod.) neexistuje štandardizovaná endpoint dokumentácia ako napr. pri REST API
2. JSON-2 API
JSON-2 API je novší spôsob komunikácie s Odoo predstavený už vo verzii 19 ako náhrada za staršie protokoly XML-RPC a JSON-RPC API. Ide o moderné HTTP API, ktoré využíva JSON formát na prenos dát. Je navrhnuté tak, aby bolo prehľadnejšie a lepšie zapadalo do súčasných integračných štandardov.
Výhody JSON-2 API
- modernejší a štandardizovaný spôsob komunikácie (JSON + HTTP)
- lepšia práca s chybami vďaka HTTP status kódov
- prehľadnejšia štruktúra volaní oproti RPC prístupu
Nevýhody JSON-2 API
- stále ide skôr o špecifické Odoo API než plnohodnotné REST API
- menšia flexibilita oproti REST API, pretože je viazané na vnútornú logiku systému, nie na vlastné navrhnuté endpointy
3. REST API
REST API (representational state transfer) interface je štandardný spôsob, ako medzi sebou komunikujú moderné aplikácie cez webové rozhrania. Využíva HTTP požiadavky (napr. GET, POST, PUT, DELETE) na prácu s dátami a je dnes najrozšírenejším prístupom pri integráciách.
Aj keď Odoo ERP systém neponúka plnohodnotné REST API ako natívnu súčasť pre všetky use-case scenáre, je možné ho implementovať pomocou vlastných modulov alebo využiť hotové riešenia tretích strán.
Výhody REST API
- bežný štandard v moderných integráciách, s ktorým počíta väčšina externých systémov a služieb
- prehľadná štruktúra endpointov, kde má každá operácia vlastnú url, čo zjednodušuje orientáciu aj dokumentáciu
- jednoduchšia integrácia s externými systémami, keďže frontendy, mobilné aplikácie a rôzne SaaS služby s REST API bežne pracujú
- dobrá škálovateľnosť a monitoring – jednotlivé endpointy je možné samostatne sledovať a optimalizovať
- možnosť presne definovať, aké dáta a logika budú dostupné, poskytuje výbornú flexibilitu pri návrhu riešení
Nevýhody REST API
- nie je plne dostupné „out-of-the-box“ v Odoo a vyžaduje implementáciu
- návrh endpointov a bezpečnosti si vyžaduje viac práce než RPC, čo sa odrazí na vyššej počiatočnej investícii
- potreba vytvoriť API štruktúru s premysleným namingom, dátovými štruktúrami a prístupovými právami
REST API odporúčame využívať pri projektoch, kde je dôležitá dlhodobá udržateľnosť, integrácia s externými systémami alebo pri vývoji vlastných aplikácií (napr. mobilné aplikácie a portály).
Ako praktické riešenie na rýchle sprístupnenie REST endpointov nad dátami v Odoo sa nám osvedčil modul MuK REST API for Odoo. Vďaka nemu sa dá elegantne vyhnúť budovaniu celého API od začiatku.
4. GraphQL API
Alternatívny prístup k návrhu API predstavuje GraphQL, pretože umožňuje presne definovať, aké dáta potrebujeme. Na rozdiel od REST API, kde sú dáta pevne viazané na jednotlivé endpointy, GraphQL umožňuje získať všetky potrebné dáta jedným dotazom.
Systém Odoo nemá GraphQL API ako štandardnú súčasť, no v rámci Odoo Apps Store existuje viacero modulov, ktoré umožňujú tento spôsob komunikácie implementovať.
V praxi sa GraphQL v Odoo ekosystéme využíva zriedkavejšie. Svoj význam má najmä v špecifických prípadoch pri komplexných frontend aplikáciách alebo integráciách, kde je potrebná vysoká flexibilita pri práci s dátami.
Výhody GraphQL
- klient si presne definuje, aké dáta potrebuje
- menej požiadaviek na server, pretože jedným dotazom je možné získať viac dát
Nevýhody GraphQL
- komplexnejšia implementácia, ktorá je náročnejšia na návrh aj údržbu
- nie je natívne podporované v Odoo, nutnosť použiť externé moduly alebo vlastné riešenie
- menšia rozšírenosť v Odoo ekosystéme, z čoho vyplýva menej skúseností, príkladov a best practices
WebSocket a dáta v reálnom čase
Popri štandardných API prístupoch existuje aj technológia WebSocket, ktorá umožňuje obojsmernú komunikáciu medzi klientom a serverom v reálnom čase. Na rozdiel od klasických API volaní, kde klient posiela požiadavku a čaká na odpoveď, WebSocket udržiava otvorené spojenie, vďaka čomu môže server aktívne posielať dáta klientovi bez potreby opakovaných requestov.
V Odoo sa WebSocket využíva najmä interne (napr. pre notifikácie alebo live aktualizácie), no pri externých integráciách sa používa skôr ako doplnok k API.
V akých prípadoch sa WebSocket využíva:
- live dashboardy a reporting
- notifikácie v reálnom čase
- chaty alebo kolaboratívne aplikácie
Nevýhody technológie WebSocket:
- vyššia implementačná náročnosť
- nevhodné pre bežné CRUD operácie (CREATE, READ, UPDATE, DELETE)
- potreba riešiť škálovanie a správu spojení
Aký typ API použiť v prípade Odoo?
Pri výbere API je dôležité zohľadniť najmä to, či ide o krátkodobé riešenie alebo dlhodobú integráciu. V prostredí Odoo sa dnes ako najperspektívnejšie javia JSON-2 API a REST API, zatiaľ čo RPC API má zmysel skôr pri už existujúcich projektoch, ktoré sú postavené na staršej verzii Odoo.
Pri REST prístupe sa v praxi často využíva modul MuK REST API for Odoo, ktorý výrazne zjednodušuje implementáciu. Rámcovo by sme vhodnosť jednotlivých riešení mohli rozdeliť nasledovne:
| Prípad | Odporúčaný prístup | Prečo | Alternatíva |
|---|---|---|---|
| Rýchla interná integrácia / skript | JSON-2 API | Najrýchlejšie nasadenie bez potreby vývoja API vrstvy | – |
| Prepojenie s externým systémom (e-shop, SaaS) | REST API | Štandardizované rozhranie, jednoduchá integrácia s inými systémami | JSON-2 API |
| Mobilná aplikácia / frontend aplikácia | REST API | Prehľadné endpointy, široká podpora v nástrojoch | GraphQL |
| Komplexný frontend (veľa dát, rôzne pohľady) | GraphQL | Flexibilita pri načítavaní dát, menej requestov | REST API |
| Real-time notifikácie / live dáta | WebSocket (doplnok) | Okamžitá komunikácia bez potreby opakovaných requestov | – |
Čo si je v prípade API potrebné uvedomiť
Výber správneho API prístupu má zásadný vplyv na úspech celej integrácie. Nejde len o technické rozhodnutie, ale aj o otázku budúcej rozšíriteľnosti, bezpečnosti a nákladov na údržbu.
Aj keď má každý projekt svoje špecifiká, v prípravnej fáze si radšej veľmi dobre zvážte, či namiesto lákavého jednoduchšieho riešenia nezvoliť modernejší prístup. JSON-2 alebo REST API jednoducho lepšie reflektujú súčasné požiadavky na integrácie.
Ak si nie ste istí, ktorý prístup je pre váš projekt najvhodnejší, v symetre vám radi pomôžeme s analýzou a návrhom optimálneho riešenia. Na základe vašich potrieb navrhneme API komunikáciu tak, aby bola nielen funkčná, ale aj dlhodobo udržateľná.