On this page
manage_search
Kald API
Kald API lader din undersøgelse hente data fra en ekstern webtjeneste og bruge svaret til at udfylde felter eller validere svar.
Funktionen Kald API lader et undersøgelsesfelt foretage en HTTP-anmodning til en ekstern tjeneste og bruge svaret til at udfylde en beregnet værdi eller validere brugerinput. Dette muliggør realtidsopslag, ID-verifikation, stregkodeopslag og enhver anden serverside-kontrol under dataindsamlingen.
Der er to funktioner:
callapi()— henter en værdi fra et API og gemmer den i etcalculate- ellertext-feltcallapi-verify()— kalder et API og blokerer fremgang, hvis svaret ikke matcher den forventede værdi (bruges iconstraint)
callapi() — Hent og gem et API-svar
Syntaks
Placer callapi() i kolonnen calculation i et calculate- eller text-felt:
callapi(method, url, allowed_auto, max_retry, no_overwrite, extract_expr, timeout, lifetime, response_q, call_type, post_body)
Parametre
| # | Parameter | Beskrivelse |
|---|---|---|
| 1 | method | HTTP-metode: 'GET' eller 'POST' |
| 2 | url | API-endepunkt-URL |
| 3 | allowed_auto | 1 for automatisk at kalde, når feltet nås; 0 for at kræve en manuel udløserknap |
| 4 | max_retry | Maksimalt antal genforsøg ved fejl |
| 5 | no_overwrite | 1 for at beholde den eksisterende værdi, hvis feltet allerede har en; 0 for altid at overskrive |
| 6 | extract_expr | JSONPath-udtryk til at udtrække den ønskede værdi fra svaret (f.eks. $.data.name) |
| 7 | timeout | Anmodningstimeout i millisekunder |
| 8 | lifetime | Hvor længe (ms) det cachelagrede svar forbliver gyldigt inden genindlæsning |
| 9 | response_q | Navn på et felt til lagring af den rå HTTP-svarkode |
| 10 | call_type | (Valgfrit) Speciel kaldtilstand: 'lazy-upload' eller 'lazy-upload-multiple' |
| 11 | post_body | (Valgfrit) POST-tekststreng. Reference til formularfelter med ##fieldname## |
Eksempel: GET-anmodning til opslag af en husholdning efter ID
| type | name | label | appearance | calculation |
|---|---|---|---|---|
| text | household_id | Husholdnings-ID | ||
| calculate | hh_name | callapi | callapi('GET', concat('https://api.example.com/households/', ${household_id}), 1, 3, 0, '$.name', 10000, 0, '') | |
| note | hh_display | Husholdning: ${hh_name} |
Eksempel: POST-anmodning med en JSON-tekst
callapi('POST', 'https://api.example.com/lookup', 1, 2, 0, '$.result.value', 15000, 0, '', '', '{"id": "##household_id##"}')
callapi-verify() — Valider en værdi mod et API
callapi-verify() blokerer indsendelse af et felt, indtil et API bekræfter, at den indtastede værdi er gyldig. Brug det i kolonnen constraint.
Parametre
| # | Parameter | Beskrivelse |
|---|---|---|
| 1 | method | HTTP-metode: 'GET' eller 'POST' |
| 2 | url | Verifikations-API-endepunkt |
| 3 | extract_expr | JSONPath til at udtrække den forventede værdi fra svaret |
| 4 | match_expr | Udtryk der sammenligner den udtrukne værdi med feltets værdi |
| 5 | timeout | Anmodningstimeout i millisekunder |
| 6 | constraint_mode | 'soft' for en advarsel kun; 'hard' for at blokere fremgang |
| 7 | post_body | (Valgfrit) POST-tekst med ##fieldname##-substitutioner |
| 8 | message | (Valgfrit) Fejlmeddelelse med flersproget understøttelse |
Bedste praksis
- Angiv altid en rimelig
timeout(5000–15000 ms). - Sæt
allowed_auto=0til verifikationer, som intervieweren skal udløse bevidst. - Sæt
no_overwrite=1, når feltet muligvis redigeres senere. - Brug
extract_exprmed en specifik JSONPath frem for at stole på rå svartekst. - Test API-kald i offline-tilstand – callapi fejler yndefuldt og viser en fejl, men formularen bør stadig kunne udfyldes for ikke-kritiske felter.
Begrænsninger
- Kræver netværksforbindelse på tidspunktet for kaldet.
- API-svar skal være JSON.
- Høj kaldfrekvens kan sænke formularnavigationen.
Var denne side nyttig?