Vask adresser i Make med HTTP-modulet

Opsæt HTTP-modulet i et Make-scenarie mod datavask, map felterne korrekt, og håndter 429 og fejl med en router eller en error handler.

4 min Niveau: Begynder ✓ Kode testet

Make har ikke brug for en særlig Danadresse-app. Det indbyggede HTTP-modul kalder API'et direkte, og med Parse response slået til bliver svaret til felter, du kan mappe videre. Den korte opskrift står på /integrationer/make. Denne guide går længere: præcis feltmapping, nøglen i en header, og hvad du gør ved fejl og 429.

1. Opsæt HTTP-modulet

Tilføj HTTP → Make a request efter det modul, der leverer adressen (Google Sheets, en webhook, dit CRM). Udfyld:

FeltVærdi
URLhttps://api.danadresse.dk/datavask/adgangsadresser
MethodGET
HeadersName X-Api-Key, Value din nøgle
Query StringName betegnelse, Value adressen fra forrige modul, fx {{1.Adresse}}
Parse responseYes

Send nøglen som header frem for api_key i query-strengen. Query-strengen står i scenariets kørselslog sammen med URL'en, så alle med adgang til loggen kan se nøglen. Har dit HTTP-modul et felt til godkendelse med en API-nøgle, kan du gemme nøglen der med header-navnet X-Api-Key.

/datavask/adgangsadresser matcher opgangen (vej, husnummer, postnummer). Skal du ramme en bestemt lejlighed, så brug /datavask/adresser: den læser etage og dør direkte fra betegnelse (Strandvejen 100, 2. tv, 2900 Hellerup), og adresse har så også etage, dør og adgangsadresseid. Har du delene i separate felter, kan du i stedet sende vejnavn, husnr, etage, dør og postnr som hver sin query-parameter.

2. Map felterne

Med Parse response ligger svaret under data. resultater er en liste med det bedste match først, og Make tæller fra 1. Antag, at HTTP-modulet er modul nummer 2:

Du skal brugeMapping
Kategori (A, B eller C){{2.data.kategori}}
Adgangsadressens id{{2.data.resultater[1].adresse.id}}
Vejnavn{{2.data.resultater[1].adresse.vejnavn}}
Husnummer{{2.data.resultater[1].adresse.husnr}}
Postnummer{{2.data.resultater[1].adresse.postnr}}
By{{2.data.resultater[1].adresse.postnrnavn}}
HTTP-status{{2.statusCode}}

Svaret, mappingen bygger på, ser sådan ud:

JSON#response-shape
{
  "kategori": "A",
  "resultater": [
    {
      "adresse": {
        "id": "0a3f507c-0624-32b8-e044-0003ba298018",
        "vejnavn": "Strandvejen",
        "adresseringsvejnavn": "Strandvejen",
        "husnr": "100",
        "supplerendebynavn": null,
        "postnr": "2900",
        "postnrnavn": "Hellerup",
        "status": 1,
        "href": "…"
      },
      "aktueladresse": { "…": "samme felter, den gældende version" },
      "vaskeresultat": {
        "afstand": 0,
        "forskelle": { "vejnavn": 0, "husnr": 0, "postnr": 0, "postnrnavn": 0 },
        "ukendtetokens": []
      }
    }
  ]
}

Er resultater tom, er kategorien C, og alle resultater[1]-felter er tomme. Tjek det i et filter, før du skriver tilbage.

Vaskesvaret har ikke kommune eller koordinater. Skal du bruge dem, så tilføj et HTTP-modul mere med URL'en https://api.danadresse.dk/adgangsadresser/{{2.data.resultater[1].adresse.id}} og samme header. Map kommune.kode, kommune.navn og adgangspunkt.koordinater[1] / [2] (længde, bredde) fra dets data. Det er ét kald mere pr. række.

3. Del flowet med en router

Læg en Router efter HTTP-modulet med tre ruter:

  1. Filter: {{2.statusCode}} = 200 og {{2.data.kategori}} er A eller B → skriv adressen tilbage. A er et præcist match. B er ét sikkert match med små stavefejl, så skriv den officielle tekst fra resultatet tilbage, ikke inputtet.
  2. Filter: {{2.statusCode}} = 200 og {{2.data.kategori}} = C → send til manuel kontrol (Slack, mail, en fane i dit regneark). C betyder flere kandidater eller større afvigelser; godkend det aldrig automatisk.
  3. Fallback-ruten: alt andet → log status og adresse, så du kan køre dem igen.

Routeren virker kun, hvis HTTP-modulet ikke stopper scenariet ved fejl. Sæt derfor Evaluate all states as errors til No under modulets avancerede indstillinger. Så kommer 4xx- og 5xx-svar videre som almindelige bundter med statusCode.

4. 429 og genforsøg

Der er to slags 429, og de skal behandles forskelligt:

KodeHeaderHvad du gør
rate_limit_per_minuteRetry-After (1-60 sekunder)For mange kald i minuttet. Vent og prøv igen
quota_exceededingen Retry-AfterGratisplanens månedskvote og dens buffer på 20 % er brugt. Stop indtil den 1. i næste måned, eller opgrader

Koden står i {{2.data.code}}, fordi fejlsvar på DAWA-stierne har formen {"type", "title", "details", "code"}. Ved quota_exceeded er {{2.data.title}} en forklaring i klar tekst, {{2.data.details.resets_at}} siger, hvornår kvoten nulstilles, og {{2.data.details.upgrade_url}} linker til opgraderingssiden. Afviste kald tæller ikke.

Vil du hellere lade Make prøve igen automatisk, så lad Evaluate all states as errors stå på Yes, højreklik på HTTP-modulet, og vælg Add error handler → Break. Sæt antal forsøg til 3 og intervallet til 1 minut. Det kræver, at Allow storing of incomplete executions er slået til i scenariets indstillinger. Break hjælper ved minutgrænsen, ikke ved en brugt månedskvote.

Behandler scenariet mange rækker på én gang, så indsæt Tools → Sleep på 1 sekund efter HTTP-modulet. På gratisplanen er grænsen 360 kald i minuttet.

Test kaldet

Samme kald som HTTP-modulet, fra en terminal:

Shell#test-call
curl -s "https://api.danadresse.dk/datavask/adgangsadresser?betegnelse=Strandvejen%20100%2C%202900%20Hellerup" \
  -H "X-Api-Key: $DANADRESSE_API_KEY"

Næste skridt

Relaterede guides

Markdown-kilde Fejl i guiden? Skriv til os API-reference (Swagger)

Prøv det med en gratis nøgle

2 000 kald/måned på gratisplanen. Intet kreditkort.

Opret konto →