Volanie API
Volanie API umožňuje prieskumu načítavať dáta z externej webovej služby a použiť odpoveď na vyplnenie polí alebo overenie odpovedí.
Funkcia Volanie API umožňuje poľu prieskumu vykonať HTTP požiadavku na externú službu a použiť odpoveď na vyplnenie vypočítanej hodnoty alebo overenie vstupu používateľa. To umožňuje vyhľadávania v reálnom čase, overovanie ID, vyhľadávania čiarových kódov a akékoľvek iné serverové kontroly počas zberu dát.
Existujú dve funkcie:
callapi()— načíta hodnotu z API a uloží ju do poľacalculatealebotextcallapi-verify()— zavolá API a zablokuje postup ak odpoveď nezodpovedá očakávanej hodnote (používa sa vconstraint)
callapi() — Načítanie a uloženie odpovede API
Syntax
Umiestnite callapi() do stĺpca calculation poľa calculate alebo text:
callapi(method, url, allowed_auto, max_retry, no_overwrite, extract_expr, timeout, lifetime, response_q, call_type, post_body)
Parametre
| # | Parameter | Popis |
|---|---|---|
| 1 | method | HTTP metóda: 'GET' alebo 'POST' |
| 2 | url | URL koncového bodu API |
| 3 | allowed_auto | 1 na automatické volanie keď je pole dosiahnuté; 0 na vyžadovanie manuálneho tlačidla |
| 4 | max_retry | Maximálny počet pokusov pri zlyhaní |
| 5 | no_overwrite | 1 na zachovanie existujúcej hodnoty ak pole už má jednu; 0 na vždy prepísanie |
| 6 | extract_expr | Výraz JSONPath na extrahovanie požadovanej hodnoty z odpovede (napr. $.data.name) |
| 7 | timeout | Časový limit požiadavky v milisekundách |
| 8 | lifetime | Ako dlho (ms) zostáva uložená odpoveď platná pred opätovným načítaním |
| 9 | response_q | Názov poľa na uloženie surového HTTP kódu odpovede (napr. ${response_status}) |
| 10 | call_type | (Voliteľné) Špeciálny režim volania: 'lazy-upload' alebo 'lazy-upload-multiple' |
| 11 | post_body | (Voliteľné) Reťazec tela POST. Odkazujte na polia formulára pomocou ##fieldname## |
Príklad: GET požiadavka na vyhľadanie domácnosti podľa ID
| type | name | label | appearance | calculation |
|---|---|---|---|---|
| text | household_id | ID domácnosti | ||
| calculate | hh_name | callapi | callapi('GET', concat('https://api.example.com/households/', ${household_id}), 1, 3, 0, '$.name', 10000, 0, '') | |
| note | hh_display | Domácnosť: ${hh_name} |
Príklad: POST požiadavka s JSON telom
callapi('POST', 'https://api.example.com/lookup', 1, 2, 0, '$.result.value', 15000, 0, '', '', '{"id": "##household_id##"}')
V post_body použite ##fieldname## na vloženie aktuálnej hodnoty ľubovoľného poľa formulára.
Vzhľad: callapi
Pridajte callapi do stĺpca appearance poľa na povolenie integrácie volania API:
| type | name | label | appearance | calculation |
|---|---|---|---|---|
| calculate | api_result | callapi | callapi('GET', ...) |
Keď je allowed_auto 0, rtSurvey zobrazí tlačidlo „Načítať", ktoré anketár ťuká manuálne.
callapi-verify() — Overenie hodnoty voči API
callapi-verify() blokuje odoslanie poľa, kým API nepotvrdí, že zadaná hodnota je platná. Použite ho v stĺpci constraint.
Syntax
callapi-verify(method, url, extract_expr, match_expr, timeout, constraint_mode, post_body, message)
Parametre
| # | Parameter | Popis |
|---|---|---|
| 1 | method | HTTP metóda: 'GET' alebo 'POST' |
| 2 | url | Overovací koncový bod API |
| 3 | extract_expr | JSONPath na extrahovanie očakávanej hodnoty z odpovede |
| 4 | match_expr | Výraz porovnávajúci extrahovanú hodnotu s hodnotou poľa (napr. $.status = 'valid') |
| 5 | timeout | Časový limit požiadavky v milisekundách |
| 6 | constraint_mode | 'soft' iba pre varovanie; 'hard' na blokovanie postupu |
| 7 | post_body | (Voliteľné) Telo POST so substitúciami ##fieldname## |
| 8 | message | (Voliteľné) Chybová správa. Podporuje viacero jazykov: <en>Invalid!</en><sk>Neplatné!</sk> |
Príklad: Overenie čiarového kódu voči registru majetku
| type | name | label | appearance | constraint | constraint_message |
|---|---|---|---|---|---|
| barcode | asset_code | Naskenujte čiarový kód majetku | callapi-verify | callapi-verify('POST', 'https://api.example.com/assets/verify', '$.valid', ". = 'true'", 10000, 'hard', '{"code": "##asset_code##"}') | Majetok nebol nájdený v registri |
Vzhľad: callapi-verify(...)
Stĺpec appearance na poli s callapi-verify() v constraint by mal obsahovať callapi-verify(params) alebo callapi-verify(dynamicParams) na signalizáciu rtSurvey, že toto pole používa overovanie API.
Používanie dát App API spolu s callapi
Kombinujte callapi() s pulldata('app-api', 'user.token') na vloženie tokenu autentifikovaného používateľa do vašej API požiadavky:
callapi('POST', 'https://api.example.com/data', 1, 2, 0, '$.value', 10000, 0, '', '',
concat('{"token":"', pulldata('app-api','user.token'), '","id":"##item_id##"}'))
Najlepšie postupy
- Vždy nastavte rozumný
timeout(5000–15000 ms) — nepoužívajte 0 alebo veľmi vysoké hodnoty. - Nastavte
allowed_auto=0pre overenia, ktoré by mal anketár spúšťať vedome (napr. kontroly ID). - Nastavte
no_overwrite=1keď môže byť pole neskôr editované a nechcete, aby opätovné načítanie prepísalo manuálne opravy. - Používajte
extract_exprso špecifickým JSONPath namiesto spoliehania sa na surový text odpovede. - Testujte volania API v offline režime — callapi zlyhá elegantne a zobrazí chybu, ale formulár by mal byť stále vyplniteľný pre nekritické polia.
Obmedzenia
- Vyžaduje sieťové pripojenie v čase volania — volania zlyhajú, keď je zariadenie offline.
- Odpovede API musia byť JSON — XML alebo odpovede s čistým textom vyžadujú ďalšie parsovanie.
- Vysoká frekvencia volaní (napr. jedno API volanie na inštanciu opakovania) môže spomaliť navigáciu vo formulári.