Přeskočit na hlavní obsah

Jak používat API?

Doporučené postupy, čemu se vyhnout a jak rozumět chybovým kódům.

Petr Pech avatar
Autor: Petr Pech
Aktualizováno dnes

Používání REST API ABRA Flexi otevírá široké možnosti, jak systém integrovat s dalšími aplikacemi a automatizovat běžné procesy. Aby však integrace fungovala spolehlivě a efektivně, je potřeba řídit se určitými pravidly a osvědčenými postupy. Správný přístup ušetří čas vývojářům, sníží zátěž systému a zabrání zbytečným chybám při práci s daty.

V tomto článku se zaměříme na doporučené best practices, které vám pomohou API využívat naplno – od optimalizace dotazů, správného stránkování nebo strategie opakování požadavků, až po práci s chybovými kódy a jejich pochopení. Dozvíte se také, jak předejít duplicitám, jak pracovat s limity a proč je důležité myslet na bezpečnost a konzistenci dat už při návrhu integrace.

Cílem je nejen „získat data“, ale udělat to efektivně - s ohledem na výkon systému, bezpečnost a spolehlivost celé integrace.

Autentizace a bezpečnost

Bezpečná autentizace

Autentizace je základním prvkem bezpečnosti při práci s REST API. Pokud není nastavena správně, může dojít k úniku citlivých dat nebo k neoprávněnému přístupu do systému. Proto je nutné používat bezpečné metody přihlášení a přenosu dat a vyhnout se zastaralým či rizikovým postupům, které mohou bezpečnost celé integrace ohrozit.

  • Veškerou komunikaci provádějte vždy přes HTTPS, aby byla data při přenosu šifrovaná.

  • Nikdy neposílejte hesla v URL (jsou viditelná v logech a historii prohlížeče).

  • Používat pouze API uživatele se správným nastavením práv. Ověřte si, že přístupové údaje mají jen taková oprávnění, která jsou skutečně potřeba (princip minimálních oprávnění).

Bezpečné zacházení s přihlašovacími údaji

Přístupové údaje (uživatelská jména, hesla, API tokeny) jsou klíčem k vašim datům. Pokud se dostanou do nepovolaných rukou, může dojít k vážnému bezpečnostnímu incidentu. Proto je nutné s nimi pracovat maximálně opatrně a řídit se osvědčenými postupy, které riziko úniku minimalizují.

  • Nikdy neukládejte přihlašovací údaje přímo v kódu (hard-coding). Používejte konfigurační soubory nebo systém pro správu tajemství (Secrets Manager, Vault).

  • Nesdílejte tokeny ani hesla v e-mailech nebo chatech, kde by mohly být zachyceny.

  • Rotujte tokeny a hesla pravidelně a omezte jejich dobu platnosti, pokud to systém umožňuje.

  • Ukládejte citlivé údaje bezpečně – například šifrovaně v databázi nebo v zabezpečeném úložišti.

  • Používejte oddělené účty pro testovací a produkční prostředí, aby nedošlo k záměně.


Optimalizace dotazů a efektivní práce s daty

Cílem není „stáhnout všechno“, ale rychle získat přesně to, co potřebujete, s minimální zátěží pro síť i server. Přemýšlejte o tom, jak data používáte: co opravdu zobrazíte, jak často se mění, zda je musíte načíst hned, nebo lze část předpočítat či uložit do cache. Dobře navržené dotazy a tok dat zkracují odezvu, šetří limity API a zvyšují stabilitu celé integrace.

  • Dotazujte se jen nutná pole – omezte výběr na konkrétní sloupce (úroveň detailu); menší payload = nižší latence.

  • Používejte filtry a stránkování – přenášejte jen relevantní záznamy (filtrace).

  • Stránkování - dotazujte se na záznamy v dávkách (stránkování).

  • Batch operace - je efektivnější poslat jednu hromadnou dávku než stovky samostatných požadavků

  • Caching odpovědí – ukládat si výsledky často používaných dotazů (číselníky a málo měnící se seznamy)

Changes API a Webhooks

Ne všechna data musíte stahovat znovu – efektivnější je odebírat jen změny. K tomu slouží změnové feedy (Changes API) a push notifikace (webhooky). Changes API je ideální pro spolehlivou delta synchronizaci řízenou klientem (polling + kurzor), webhooky zase pro rychlou reakci na události bez zbytečného dotazování. V praxi je často nejlepší oba přístupy kombinovat.

Práce s delta exportem

Místo stahování celé agendy při každé synchronizaci je lepší získat jen to, co se opravdu změnilo. Delta export výrazně šetří přenosy dat, snižuje zátěž API i databáze a urychluje integraci – obzvlášť u větších agend nebo při pravidelném reportingu.

  • Používejte pole lastUpdate pro načtení jen nových či změněných záznamů.

    • V BI napojeních, často pro účetní reporty stahujte data inkrementálně, ne celou historii.

    • Ukládejte si poslední čas synchronizace a od něj načítejte pouze delta změny.


Limity a zátěž

Paralelní dotazy

Při práci s REST API nespouštějte více stejných dotazů najednou. Pokud se to "přežene", systém je zahlcený a výsledkem bývá spíše zpomalení nebo chybové odpovědi. Příliš velké zahlcení v poslední fázi blokujeme a odblokování je zapotřebí případně řešit s naším supportem.

Proto je dobré s paralelními dotazy pracovat opatrně a volání rozkládat chytře v čase.

Shrnuto bodově:

  • Nevytvářejte lavinu paralelních dotazů – může dojít k přetížení systému a k blokaci z naší strany.

  • Rozkládejte zátěž a seskupujte dotazy do logických sekvencí.

  • U náročnějších endpointů (např. párování plateb nebo přepočet dokladů) vyčkejte na odpověď před odesláním dalšího požadavku.

Throttling & Retry

Při komunikaci s API může dojít k situaci, kdy server odmítne další požadavky, protože je právě přetížený. Typicky se to projeví chybovým kódem 429 – Too Many Requests.

V takové chvíli není vhodné okamžitě zkoušet požadavek znovu, protože by to zátěž ještě zvýšilo. Správnou praxí je použít tzv. exponenciální backoff – tedy postupně prodlužovat čekací dobu mezi dalšími pokusy.

  • Pokud dostanete chybu 429 nebo server hlásí přetížení, neprovádějte okamžitý opakovaný pokus.

  • Použijte exponenciální backoff – po každém neúspěšném pokusu prodlužte čekací dobu (např. 1s → 2s → 4s → 8s).

  • Tím dáte systému čas na zpracování předchozích požadavků a zvýšíte šanci, že další pokus uspěje.

Rate limiting

Respektujte denní limit počtu dotazů. Výchozí stav je 20.000 / den, nicméně může se u Vaší licence lišit dle zakoupeného objemu.

Počet API požadavků

do 20.000/den

do 50.000/den

do 100.000/den

do 200.000/den

ABRA Flexi Basic

v ceně pronájmu API

nelze připlatit

nelze připlatit

nelze připlatit

ABRA Flexi Business

v ceně pronájmu API

1 000 Kč / měsíc

2 500 Kč / měsíc

5 000 Kč / měsíc

ABRA Flexi Premium

v ceně pronájmu API

1 000 Kč / měsíc

2 500 Kč / měsíc

5 000 Kč / měsíc


Spolehlivost

Práce s chybovými HTTP kódy

Správné vyhodnocování chybových HTTP kódů je klíčové pro spolehlivou integraci. Každý kód má svůj význam a pomáhá rozlišit, zda je problém na straně klienta (špatný požadavek, neplatná data, chybějící oprávnění), nebo na straně serveru (dočasná nedostupnost, interní chyba). Díky tomu může aplikace reagovat správně – buď opravit data a poslat požadavek znovu, nebo počkat a zkusit akci později.

  • Rozlišujte chyby 4xx (klientská chyba) – obvykle špatný požadavek, který musíte opravit (např. chybějící parametr, neplatná hodnota, přístup bez oprávnění).

  • Rozlišujte chyby 5xx (serverová chyba) – dočasný problém na straně API, je vhodné akci zopakovat později (např. výpadek služby).

  • Nastavte alerty na chyby – pokud API začne vracet větší množství 4xx nebo 5xx odpovědí, je nutné o tom vědět. Na straně klienta se vyplatí takové situace logovat a hlídat.

Tabulka chybových hlášek

Kód

Mapper

Hláška

Vysvětlení

400

NamedUsersLimitExceededExceptionMapper

Vaše licence neumožňuje vytvořit uživatele typu '%p'. Pro úpravu licence, prosím, kontaktujte obchodní oddělení ABRA Flexi.

Nemáte volný přístup pro dalšího uživatele, je nutné dokoupit licenci.

400

WSUserEmailDuplicatedExceptionMapper

Tento e-mail již používá jiný uživatel.

E-mailová adresa už je v systému zaregistrována.

400

OldAppServerExceptionMapper

Verze databáze firmy %p je novější než verze serveru ABRA Flexi.

Databáze byla vytvořena v novější verzi systému než váš server.

400

PgRestoreRTExceptionMapper

(obecná zpráva z výjimky)

Obnova databáze se nezdařila, systém vrací technickou chybu.

400

QueryExceptionMapper

(obecná zpráva z výjimky)

Dotaz do databáze je chybný nebo neplatný.

400

UnsupportedOperationExceptionMapper

(obecná zpráva z výjimky)

Požadovaná operace není v systému podporována.

400

WSAccessDeniedExceptionMapper

K této akci nemáte přístup.

Nemáte oprávnění k provedení akce.

400

WSApplicationExceptionMapper

(složené zprávy z výjimky a jejich příčin)

Došlo k aplikační chybě, podrobnosti jsou uvedeny v hlášení.

400

WebApplicationExceptionMapper

Neplatný formát JSON: %p

Data mají špatný formát a systém je neumí načíst.

400

InternalErrorMapper

(pro WSUserErrorException – obecná zpráva)

Došlo k uživatelské chybě v aplikaci.

400

LocalizedBusinessException

Obecná lokalizovaná výjimka

Vyskytla se obchodní chyba (např. v nastavení nebo datech).

400

MissingParameterException

Parameter '%p' is required for requested operation

V požadavku chybí povinný údaj.

400

IncompatibleParameterValuesException

Parameters %p have incompatible values!

Kombinace parametrů je neplatná.

400

IllegalParameterFormatException

Parametr '%p' je očekáván ve formátu '%p'.

Hodnota parametru není ve správném formátu.

400

ErrorParsingFileException

Soubor se nepodařilo přečíst protože: '%p'.

Systém nedokázal načíst soubor (chybný obsah nebo formát).

400

UnsupportedParameterValueException

Parameter '%p' has unsupported value! Choose one from following options: %p

Zadaná hodnota není podporovaná, vyberte některou z povolených.

402

PaymentRequiredExceptionMapper

Funkce není povolena v licenci.

Nemáte licenci pro využití této funkce.

403

ActionNotSupportedExceptionMapper

Tato akce zde není podporovaná.

Funkce není dostupná v tomto kontextu.

403

LicenseExpiredExceptionMapper

(obecná zpráva z výjimky)

Platnost licence vypršela.

403

NotAuthorizedExceptionMapper

(obecná zpráva z výjimky)

Nemáte oprávnění k přístupu.

403

UnauthorizedExceptionMapper

(obecná zpráva z výjimky)

Pokus o přístup byl zamítnut, chybí oprávnění.

403

WarrantyExpiredException

Na datovém zdroji se pokoušíte aktualizovat na novější verzi systému ABRA Flexi, než vás opravňuje zaplacená služba Roční podpora…

Nemáte aktivní roční podporu, která je nutná pro instalaci nové verze.

403

CompanyAccessForbiddenException

Do účetnictví firmy máte zablokovaný vstup.

Nemáte povolený přístup k této firmě.

404

CompanyNotFoundExceptionMapper

Firma %p neexistuje.

Požadovaná firma nebyla nalezena.

404

NotFoundExceptionMapper

Adresa není platná. / Adresa %p není platná.

URL adresa není správná nebo neexistuje.

404

UserNotFoundExceptionMapper

Uživatel '%p' neexistuje.

Uživatel nebyl nalezen.

404

WSApplicationExceptionMapper

(pro WSObjectNotFoundException)

Požadovaný objekt nebyl nalezen.

406

UnsupportedOutputFormatExceptionMapper

(obecná zpráva z výjimky)

Požadovaný výstupní formát není podporován.

409

ConcurrentAccessExceptionMapper

(obecná zpráva z výjimky)

Operaci nelze provést, protože s daty pracuje někdo jiný.

429

TooManyRequestsException

V této firmě momentálně dochází ke zpracování většího počtu dřívějších požadavků prosím vyčkejte.

Je příliš mnoho požadavků najednou, zkuste to znovu později.

500

InternalErrorMapper

(pro obecné výjimky – obecná zpráva)

Nastala neočekávaná chyba serveru.

500

ResourceNotFoundException

Requested resource '%p' was not found

Požadovaný zdroj nebyl nalezen.

503

ServiceUnavailableException

Služba momentálně není dostupná zkuste to prosím později.

Služba je dočasně nedostupná, zkuste to později.

503

ServerStartingException

Server startuje prosím vyčkejte.

Server se spouští, je třeba chvíli počkat.

503

CompanyStateException

Company '%s' is in '%s' state.

Firma je v jiném stavu (např. zamčená, v údržbě) a nelze s ní pracovat.

Idempotence

Při práci se zápisy do API je důležité zajistit, aby se opakovaný požadavek nezpracoval vícekrát a nevytvářel duplicity. Typická situace nastává při výpadku spojení nebo použití strategie retry – klient si není jistý, zda požadavek proběhl, a odešle ho znovu. Bez idempotence by tak mohlo vzniknout více faktur, objednávek nebo jiných dokladů, a to je problém zejména v účetnictví.

  • U zápisů vždy myslete na to, aby opakovaný request nezaložil duplicitní záznam.

  • Používejte externí ID – při vytváření nového záznamu mu přidělte identifikátor ze zdrojové databáze nebo systému, odkud data pocházejí.

    • Pokud se stejný požadavek odešle znovu se stejným externím ID, API vrátí původní výsledek místo vytvoření duplicity.

Příklad

{
"winstrom":{
"@version":"1.0",
"faktura-vydana":[
{
"id":[
"ext:123",
"code:VF1-0035/21"
],
"popis":"popis"
}
]
}
}

Logování requestů a odpovědí

Při integraci s REST API je velmi užitečné uchovávat záznamy o odeslaných požadavcích a přijatých odpovědích. Díky logům můžete rychle zjistit, proč něco nefunguje, co API skutečně vrátilo, nebo jaký požadavek byl na server poslán. Logování je zároveň neocenitelnou pomůckou při komunikaci se zákaznickou podporou – místo vágního popisu „něco se pokazilo“ máte k dispozici konkrétní data.

Uchovávejte logy všech důležitých requestů a odpovědí

  • Alespoň po omezenou dobu, kdy může být zapotřebí zjišťovat příčinu problému.

  • Logy vám usnadní ladění chyb a pomohou zjistit, zda problém vznikl na straně klienta nebo serveru.

  • Při řešení se supportem je možné poskytnout přesný požadavek a odpověď, což značně urychlí hledání příčiny.

Konzistence a verzování

API se v čase vyvíjí – přibývají nová pole, někdy se změní formát nebo logika odpovědi. Pokud na to aplikace není připravena, může při změně přestat fungovat. Proto je důležité psát integrace tak, aby byly odolné vůči změnám, a zároveň mít přehled o vývoji API.

  • Forward compatibility – navrhujte integraci tak, aby ignorovala neznámá pole a zvládla i drobné změny formátu.

  • Sledujte change-log – pravidelně kontrolujte změny API a ověřujte, zda se nedotýkají vaší integrace.

Uživatelská zkušenost & integrace

Kvalitní integrace není jen o správném volání API, ale i o tom, jak snadno se nasazuje, testuje a udržuje. Oddělení testovacího a produkčního prostředí snižuje riziko chyb, stejně jako správný přístup k zálohám dat – ty je lepší řešit přes webové rozhraní než přes API.

  • Testujte na sandboxu – oddělte testovací a produkční prostředí (pomocí zálohy firmy vytvořte kopii ostrých dat), ať neohrozíte reálná data.

  • Nepoužívejte API pro zálohy v cloudu – automatické zálohy stahujte z webové aplikace, API k tomu není primárně určené.

Monitoring a správa

Bez průběžného přehledu o tom, kolik a jak často API voláte, se problémy odhalují pozdě. Základní monitoring vám pomůže hlídat limity, ladit výkon a předcházet výpadkům integrace.

Závěr

Dodržování osvědčených postupů při práci s REST API ABRA Flexi vám pomůže stavět stabilní, bezpečné a dlouhodobě udržitelné integrace. Ať už jde o optimalizaci dotazů, správu chybových stavů nebo bezpečné zacházení s přístupovými údaji, vždy se vyplatí investovat do správného návrhu už od začátku.

Pokud si nejste jistí, jak API využít ve vašem konkrétním scénáři, nebo potřebujete detailnější doporučení, je možné domluvit individuální konzultaci, kde vám s implementací rádi pomůžeme.

Dostali jste odpověď na svou otázku?