Ingen resultater? Når svaret er en tom liste
Gå en tjekliste igennem, når API'et svarer 200 med en tom liste, fra side og vejnavne til status, srid, autocomplete-type og datavask.
En tom liste ([]) med status 200 betyder, at kaldet var gyldigt, men at intet matchede alle filtrene. API'et fortæller ikke, hvilket filter der var for snævert. Fjern filtrene ét ad gangen, og brug tjeklisten herunder. De fleste tilfælde skyldes formatet på en kode eller et filter, der virker anderledes end forventet.
Kør det samme kald med færre filtre
Den hurtigste diagnose er at fjerne ét filter ad gangen, indtil der kommer resultater. Det sidste filter, du fjernede, er synderen. Eksemplet her viser en almindelig: et forkortet vejnavn.
import os import requests API = "https://api.danadresse.dk" headers = {"X-Api-Key": os.environ["DANADRESSE_API_KEY"]} for name in ("Gl. Kongevej", "Gammel Kongevej"): r = requests.get(f"{API}/adgangsadresser", params={"vejnavn": name, "postnr": "1610", "per_side": 1}, headers=headers, timeout=10) r.raise_for_status() print(f"vejnavn={name}: {len(r.json())} resultat(er)")
vejnavn=Gl. Kongevej: 0 resultat(er) vejnavn=Gammel Kongevej: 1 resultat(er)
Tjeklisten
Paginering
- Symptom: Side 1 har data, en senere side er tom.
- Årsag:
sideer efter den sidste side. Der er ingen header med det samlede antal. - Løsning: Stop løkken, når en side har færre rækker end
per_side. Se Paginering.
Koder
- Symptom: Din egen kode finder ikke kommune 101 eller postnummer 800 i svaret.
- Årsag: Koder i svarene har altid foranstillede nuller:
"kommunekode": "0101","nr": "0800". Som input tager API'et bådekommunekode=101og0101. - Løsning: Sammenlign strenge med nuller:
str(kode).zfill(4)i Python,String(kode).padStart(4, "0")i JavaScript.
- Symptom: Et postnummer giver
[], selv om adressen findes. - Årsag: Adressen ligger i et andet postnummer, end du tror. Københavnske og frederiksbergske gader skifter postnummer undervejs, og stormodtager-postnumre (firmaers egne postnumre) har ingen adresser.
- Løsning: Fjern
postnrog se, hvilket postnummer adressen har.
Status: nedlagte og foreløbige adresser
- Symptom: En ny eller en gammel adresse mangler.
- Årsag: Uden
statusellermedtagnedlagtereturnerer lister gældende og foreløbige adresser (status 1 og 3, så nybyggeri er med). Nedlagte og henlagte adresser (status 2 og 4) er udeladt./autocompleteog søgning finder kun adresser i brug: en nedlagt adresse forsvinder fra søgningen. - Løsning: Brug
medtagnedlagteellerstatus=2/status=4på/adresserog/adgangsadresser.medtagnedlagtevirker også sammen medcirkelogpolygon. Se status, darstatus og nedlagte adresser.
Filtre på vejnavn, husnummer, etage og dør
- Symptom:
vejnavn=Gl. Kongevejellervejnavn=Soendergadegiver[]. - Årsag:
vejnavnmatcher begyndelsen af det officielle navn. Forkortelser (Gl.for Gammel,Skt.for Sankt) passer ikke, og du kan ikke regne med, at en stavemåde uden æøå gør. - Løsning: Brug
/autocompleteeller/datavask/adressertil tekst, som brugere har skrevet. Brugvejnavn=kun med navne, du har fået fra API'et.
- Symptom:
husnr=12 Agiver[]. - Årsag: Husnummeret er én streng uden mellemrum:
12A. - Løsning: Fjern mellemrum mellem tal og bogstav.
- Symptom:
etage=1. salellerdør=t.h.giver[]. - Årsag: Etage og dør har faste koder: etage
st,kl,1,2…, dørth,tv,mfeller et nummer. - Løsning: Brug koderne uden punktum og uden "sal".
Id'er
- Symptom:
/adresser?id=…giver[], selv om id'et er gyldigt. - Årsag: Id'et er en adgangsadresses id. Adresser og adgangsadresser har forskellige id'er.
- Løsning: Brug
/adresser?adgangsadresseid=…for at få enhederne bag en dør, eller/adgangsadresser/{id}. Se Adresse eller adgangsadresse?
Koordinater
- Symptom:
cirkel=giver[], eller reverse giver 404No address within range. - Årsag: Længde og bredde er byttet om, UTM-koordinater er sendt uden
srid=25832, eller radius er for lille. Rækkefølgen er altid længde, bredde:cirkel=12.5683,55.6761,100. - Løsning: Se Koordinater og srid.
Autocomplete
Symptom: /autocomplete giver []. Gå disse igennem:
qer tom. En tom søgning giver altid en tom liste.kommunekode=,postnr=elleradgangsadresseid=udelukker adressen. Filtrene indsnævrer forslagene. Fjern dem og prøv igen.type=vejnavngiver kun vejnavne, ogtype=adgangsadressestopper ved husnummeret. Udentypestyres trinnet af det, brugeren har skrevet. Se Adresse eller adgangsadresse?- Etage og dør, der ikke findes på adressen (fx
3. thi et hus uden 3. sal), giver ingen forslag. - Tolerance over for stavefejl er et flag, som i DAWA: send
fuzzy(ellerfuzzy=) for at slå den til. Uden den, eller medfuzzy=false, giver et forkert stavet ord ingen forslag.
Datavask
- Symptom:
/datavask/adresser?betegnelse=…giver"kategori": "C"og"resultater": []. - Årsag: Intet vejnavn passede. Parseren læser etage og dør (
2. tv,st. th,1.mf), husbogstaver med små bogstaver (12a), et postnummer hvor som helst i teksten og stavemåder uden æøå (Aabenraa,Kobenhavn). Ord, den ikke kan placere, fx en c/o-linje, et firmanavn eller "Att.", havner ivaskeresultat.ukendtetokenspå et match. Erresultatertom, findes vejen som regel ikke i det postnummer, eller teksten ligger for langt fra det officielle navn. - Løsning: Send kun adresselinjerne, uden navne og c/o-linjer, eller send felterne hver for sig. Det virker både med GET og POST:
curl -s -G "https://api.danadresse.dk/datavask/adresser" \ --data-urlencode "vejnavn=Rådhuspladsen" \ --data-urlencode "husnr=1" \ --data-urlencode "etage=st" \ --data-urlencode "dør=th" \ --data-urlencode "postnr=4200" \ -H "X-Api-Key: $DANADRESSE_API_KEY"
Det modsatte: for mange resultater
Et parameternavn, API'et ikke kender, bliver ignoreret uden fejl, som i DAWA. Kendte filtre filtrerer. ?postnummer=8000 filtrerer ikke på noget, og du får de første adresser i hele landet. Får du resultater, der ikke passer til filteret, så tjek stavningen. Se Fejl 400 og 404 for en funktion, der fanger ukendte parametre.
Næste skridt
Relaterede guides
Markdown-kilde Fejl i guiden? Skriv til os API-reference (Swagger)