Webové háčiky

Webové háčiky predstavujú spôsob, ako sa dozvedieť o zmenách v systéme ABRA Flexi vo vašej aplikácii v reálnom čase. Princíp je jednoduchý: keď v databáze ABRA Flexi dôjde k zmene, odošle sa požiadavka POST HTTP (zvyčajne v priebehu niekoľkých sekúnd) na všetky zaregistrované adresy URL. Obsahom požiadavky je výpis zmien naraz od posledného volania háčika v rovnakom formáte, aký získate z ABRA Flexi prostredníctvom rozhrania Changes API.

Postup

Rozhranie Changes API musí byť povolené. Háčiky musia byť povolené aj v konfiguračnom súbore ABRA Flexi Server flexibee-server.xml(umiestnenie adresárov flexibee-server.xml):

... true ...

Dôvodom je, že pri spustení servera je potrebné okamžite spustiť jadro (pozri tiež Automatický štart jadra), čo je časovo náročná operácia. Poznámka: ak máte nastavenú hodnotu enableHooks na true, nie je potrebné nastavovať startKernel.

Háčik sa zaregistruje pomocou požiadavky PUT (alebo POST) na adresu /c/{firm}/hooks s nasledujúcimi parametrami:

povinné

?url=http://muj.server.cz/hook.php

URL, ktorá sa má zavolať

?format=XML

Formát údajov (možné hodnoty sú XML a JSON)

voliteľné

?lastVersion=123

Verzia, od ktorej sa začnú posielať ďalšie zmeny, t. j. nasledujúca vyššia verzia. Predvolená hodnota sa rovná aktuálnej globálnej verzii(globalVersion) v okamihu registrácie háčika. Prípustné hodnoty sú z intervalu: [0, globalVersion].

?secKey=MyHookSecretToken0687

Ľubovoľný reťazec, ktorý sa má odoslať s každým oznámením o zmene hlavičky HTTP. Slúži na jednoduché overenie, či prichádzajúce oznámenie patrí vášmu zaregistrovanému háku. Názov kľúča v hlavičke HTTP je X-FB-Hook-SecKey.

?skipUrlTest=true

Potlačenie testu funkčnosti odovzdanej adresy URL.

Napríklad:

curl -u user:password -L -k -X PUT "https://localhost:5434/c/{firma}/hooks.xml?url=http://muj.server.cz/hook.php&format=XML&lastVersion=123&secKey=MyHookSecretToken0687"

Registrácia vykoná test odovzdanej adresy URL odoslaním prázdneho oznámenia. Ak je návratový kód iný ako 2xx, háčik nebude zaregistrovaný. Vykonanie testu možno prepísať pomocou parametra skipUrlTest.

ABRA Flexi podporuje SNI od verzie 2017.1.1. To znamená, že je možné zaregistrovať háčiky smerujúce na virtuálneho hostiteľa HTTPS.

Zatiaľ nie je možné určiť, na ktoré registrácie sa má háčik odkazovať, vždy je upozornený na všetky zmeny, ktoré nastanú v systéme ABRA Flexi.

Úspech je ako zvyčajne oznámený stavovým kódom 200 a neúspech kódom 400 (odpoveď obsahuje textový popis príčiny).

Zoznam registrovaných háčikov sa nachádza na adrese /c/{firma}/hooks, neregistrované háčiky možno vyžiadať DELETE na adrese /c/{firma}/hooks/{id}.

Správanie háčika pri chybe

Ak dôjde k chybe pri spracovaní háčika, server sa pokúsi opätovne odoslať požiadavky. Ak háčik naďalej zlyháva, háčikové volania sa začnú oneskorovať. Ak je služba úplne nedostupná, každý hovor sa zvyčajne začne neskôr. Na tento účel sa používa pokuta, ktorá predstavuje čas medzi pokusmi.

Aktuálnu pokutu môžete získať pomocou funkcie GET:

curl -u user:password -L -k "https://localhost:5434/c/{firma}/hooks/{id}.xml"

Obnovenie trestu a okamžité volanie háčikov zabezpečí požiadavku PUT:

curl -u user:password -L -k -X PUT "https://localhost:5434/c/{firma}/hooks/{id}/retry"

Zaregistrované háčiky sú uložené v databáze, takže háčik bude odoslaný aj po reštarte servera. Služba zaručuje, že sa nestratia žiadne zmeny a všetky sa odovzdajú zaregistrovanému háku.

Odporúčania pre implementáciu hákov

Celý mechanizmus funguje na princípe maximálneho úsilia. To znamená, že aj keď sa snažíme doručiť oznámenia čo najskôr a vyhnúť sa duplicitám, musíme počítať s tým, že môže dôjsť k oneskoreniu alebo duplicite (jednoducho doručíme tú istú požiadavku viackrát). Ak chcete odstrániť duplicitu, môžete spracovať globálnu verziu.

Spracovanie háčika by malo trvať čo najmenej času (< 15 sekúnd) a rozhodne nesmie presiahnuť 30 sekúnd, inak sa volanie považuje za neúspešné. Odpoveď musí mať stavový kód 200 (alebo 2xx) a nemala by obsahovať žiadne telo. Ak je niektorá z týchto podmienok porušená, háčik je penalizovaný (t. j. určitý čas sa vôbec nevyvolá) a v krajnom prípade sa môže úplne vypnúť.

Ideálna implementácia háčika vykonáva len perzistenciu prijatých zmien s možným rýchlym filtrovaním relevantných zmien a vynechaním duplicít (už spracovaných zmien). Skutočné spracovanie prijatých zmien by malo prebiehať asynchrónne v nezávislom vlákne.

Ďalšie podporované stavové kódy odpovedí

Okrem klasického potvrdenia stavu 200 podporuje spracovanie háčikov v odpovediach nasledujúce možnosti:

301 (Moved Permanently) / 308 (Trvalé presmerovanie)V prípade, že presmerovanie vedie na platnú adresu URL, registrovaná adresa háčika sa aktualizuje a po krátkom treste sa zmeny oznámia na novo registrovanú adresu.410 (Gone)Predpokladá sa, že háčik bol trvalo zrušený a na strane ABRA Flexi je automaticky odregistrovaný.

Did this answer your question?