{"id":55000507,"date":"2026-04-01T00:00:00","date_gmt":"2026-05-16T18:26:28","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=507"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"PLZLookup_per_RestAPI","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/","title":{"rendered":"PLZ-Lookup per Rest-API"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/a48684ccb6174784a2f50e80d566447e\" width=\"1\" height=\"1\" alt=\"\"><b>Im Grundlagenartikel zu Rest-APIs haben wir gezeigt, wie das Konzept funktioniert und wie eine wiederverwendbare <b>HTTPRequest<\/b>-Funktion aussieht. Jetzt setzen wir das Gelernte das erste Mal gegen eine echte API ein: Wir fragen zu einer deutschen Postleitzahl den zugeh&ouml;rigen Ort und die Koordinaten ab &#8211; ohne Anmeldung, ohne API-Key und vollkommen kostenlos. Nebenbei lernen wir, wie wir die JSON-Antwort mit wenigen Handgriffen auslesen.<\/b><\/p>\n<h2>Vorbereitungen<\/h2>\n<p>Um die nachfolgenden Beispiele auszuprobieren, ben&ouml;tigst Du die beiden in der Beispieldatatenbank enthaltenen Module <b>mdlJSON <\/b>und <b>mdlJSONDOM<\/b>.<\/p>\n<p>Au&szlig;erdem m&uuml;ssen wir zwei Verweise zu Bibliotheken hinzuf&uuml;gen, was wir &uuml;ber das Verweise-Fenster des VBA-Editors erledigen.<\/p>\n<p>Hier f&uuml;gen wir die beiden Verweise auf die Bibliotheken <b>Microsoft Scripting Runtime <\/b>und <b>Microsoft XML, v6.0 <\/b>hinzu (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_02\/pic_507_001.png\" alt=\"Hinzuf&uuml;gen der ben&ouml;tigten Verweise\" width=\"499,6267\" height=\"393,8742\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Hinzuf&uuml;gen der ben&ouml;tigten Verweise<\/span><\/b><\/p>\n<h2>Die API: Zippopotam.us<\/h2>\n<p>Der Dienst <b>Zippopotam.us<\/b> ist eine schlanke, &ouml;ffentlich zug&auml;ngliche REST-API f&uuml;r Postleitzahlen aus &uuml;ber 60 L&auml;ndern. Es gibt kein Entwicklerkonto, keinen API-Key und keine Ratenbegrenzung, die f&uuml;r unsere Zwecke relevant w&auml;re.<\/p>\n<p>Ein einziger GET-Aufruf gen&uuml;gt, um zu einer Postleitzahl den Ort und die geografischen Koordinaten zu erhalten.<\/p>\n<p>Die URL hat immer denselben Aufbau:<\/p>\n<pre>https:\/\/api.zippopotam.us\/&lt;L&auml;nderk&uuml;rzel&gt;\/&lt;PLZ&gt;<\/pre>\n<p>F&uuml;r die Postleitzahl 44787 in Deutschland sieht der Aufruf also so aus:<\/p>\n<pre>https:\/\/api.zippopotam.us\/de\/44787<\/pre>\n<p>Das L&auml;nderk&uuml;rzel entspricht dem zweistelligen ISO-3166-Code in Kleinbuchstaben, also zum Beispiel <b>de<\/b> f&uuml;r Deutschland, <b>at<\/b> f&uuml;r &Ouml;sterreich oder <b>ch<\/b> f&uuml;r die Schweiz.<\/p>\n<h2>Die JSON-Antwort verstehen<\/h2>\n<p>Wenn wir die URL im Browser aufrufen, erhalten wir eine JSON-Antwort, die in etwa so aussieht:<\/p>\n<pre>{\r\n   \"post code\": \"44787\",\r\n   \"country\": \"Germany\",\r\n   \"country abbreviation\": \"DE\",\r\n   \"places\": [\r\n     {\r\n       \"place name\": \"Bochum\",\r\n       \"longitude\": \"7.2167\",\r\n       \"state\": \"North Rhine-Westphalia\",\r\n       \"state abbreviation\": \"NW\",\r\n       \"latitude\": \"51.4833\"\r\n     }\r\n   ]\r\n}<\/pre>\n<p>Die Struktur ist flach: Au&szlig;en liegen einfache Felder wie <b>post code<\/b> und <b>country<\/b>. Das Feld <b>places<\/b> ist ein Array &#8211; erkennbar an den eckigen Klammern -, das ein oder mehrere Objekte enthalten kann.<\/p>\n<p>In Deutschland ist einer PLZ nicht zwingend genau ein Ort zugeordnet &#8211; das Array kann also mehrere Elemente enthalten. Wie wir damit umgehen, zeigt die Funktion <b>PLZLookup<\/b> weiter unten.<\/p>\n<h2>JSON-Antworten auslesen mit ParseJson<\/h2>\n<p>VBA kennt JSON nicht von Natur aus. Um auf die einzelnen Felder zuzugreifen, verwenden wir die Funktion <b>ParseJson<\/b> aus dem Modul <b>mdlJSON<\/b>. Diese wandelt die JSON-Zeichenkette in ein Objektmodell aus <b>Dictionary<\/b>&#8211; und <b>Collection<\/b>-Elementen um.<\/p>\n<p>Auf die einzelnen Werte greifen wir dann &uuml;ber verkettete <b>Item<\/b>-Aufrufe zu. Die vollst&auml;ndige Beschreibung dieser Module findest Du in den Artikeln <b>Mit JSON arbeiten<\/b> (<b>www.vbentwickler.de\/361<\/b>) und <b>JSON-Dokumente per Objektmodell zusammenstellen<\/b> (<b>www.vbentwickler.de\/412<\/b>).<\/p>\n<p>Damit wir aber gar nicht erst r&auml;tselm&uuml;&szlig;ig bl&auml;ttern m&uuml;ssen, gibt es den praktischen Helfer <b>GetJSONDOM<\/b> aus dem Modul <b>mdlJSONDOM<\/b>. Dieser nimmt die JSON-Zeichenkette entgegen und gibt f&uuml;r jedes enthaltene Feld genau den VBA-Ausdruck aus, mit dem wir auf den Wert zugreifen.<\/p>\n<p>Diese Prozedur k&ouml;nnen wir ganz einfach wie folgt gestalten:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>JSONDOMAnzeigen()\r\n     <span style=\"color:blue;\">Dim <\/span>strURL<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strResponse<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intStatus<span style=\"color:blue;\"> As Integer<\/span>\r\n     strURL = \"https:\/\/api.zippopotam.us\/de\/44787\"\r\n     intStatus = HTTPRequest(strURL, \"GET\", strResponse)\r\n     <span style=\"color:blue;\">If <\/span>intStatus = 200<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Debug.Print<\/span> GetJSONDOM(strResponse, <span style=\"color:blue;\">True<\/span>)\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Prozedur f&uuml;hrt den Aufruf der Rest-API aus und bekommt das Ergebnis im R&uuml;ckgabeparameter <b>strResponse<\/b>. F&uuml;r unsere PLZ-Antwort liefert <b>GetJSONDOM<\/b> im Direktbereich folgendes Ergebnis:<\/p>\n<pre>objJSON.Item(\"post code\"): 44787\r\nobjJSON.Item(\"country\"): Germany\r\nobjJSON.Item(\"country abbreviation\"): DE\r\nobjJSON.Item(\"places\").Item(1)\r\n     .Item(\"place name\"): Bochum\r\nobjJSON.Item(\"places\").Item(1)\r\n     .Item(\"longitude\"): 7.2167\r\nobjJSON.Item(\"places\").Item(1)\r\n     .Item(\"state\"): North Rhine-Westphalia\r\nobjJSON.Item(\"places\").Item(1)\r\n     .Item(\"latitude\"): 51.4833<\/pre>\n<p>Wir sehen sofort: Die einfachen Felder sprechen wir direkt mit <b>objJSON.Item(&#8220;Feldname&#8221;)<\/b> an. Das verschachtelte Feld <b>places<\/b> erfordert einen zus&auml;tzlichen <b>Item(1)<\/b>-Aufruf f&uuml;r das erste Element des Arrays &#8211; und dahinter nochmals <b>Item(&#8220;Feldname&#8221;)<\/b> f&uuml;r das gew&uuml;nschte Unterfeld (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_02\/pic_507_002.png\" alt=\"Ausgabe von GetJSONDOM im Direktbereich des VBA-Editors\" width=\"649,627\" height=\"242,2521\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Ausgabe von GetJSONDOM im Direktbereich des VBA-Editors<\/span><\/b><\/p>\n<p>Wenn wir beispielsweise mehrere Elemente f&uuml;r places zur&uuml;ckbekommen w&uuml;rden, k&ouml;nnten wir diese in einer <b>For&#8230;Next<\/b>-Schleife durchlaufen.<\/p>\n<p>Damit brauchen wir f&uuml;r keine JSON-Antwort mehr zu r&auml;tseln. Wir rufen die API einmal testweise auf, geben das Ergebnis durch <b>GetJSONDOM<\/b> und haben sofort alle ben&ouml;tigten Zugriffspfade schwarz auf wei&szlig;.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Als Basis dient eine einfache Access-Datenbank mit einer Tabelle namens <b>tblAdressen<\/b>. Die Tabelle enth&auml;lt die Felder <b>ID<\/b> (Autowert), <b>Name<\/b>, <b>Strasse<\/b>, <b>PLZ<\/b>, <b>Ort<\/b>, <b>Bundesland<\/b>, <b>Breitengrad<\/b> und <b>Laengengrad<\/b>.<\/p>\n<p>Die letzten vier Felder sollen per API bef&uuml;llt werden, sobald eine neue PLZ eingetragen wird.<\/p>\n<p>Die Funktion <b>HTTPRequest<\/b> aus dem Grundlagenartikel legen wir in einem eigenen Modul namens <b>mdlHTTP<\/b> ab.<\/p>\n<h2>PLZ-Lookup: Die Kernfunktion<\/h2>\n<p>Die Funktion <b>PLZLookup<\/b> nimmt eine Postleitzahl und ein optionales L&auml;nderk&uuml;rzel entgegen und gibt ein <b>Dictionary<\/b>-Objekt mit den Ergebnisfeldern zur&uuml;ck. Enth&auml;lt die Antwort mehrere Orte f&uuml;r dieselbe PLZ, zeigt die Funktion eine <b>InputBox<\/b> an, in der der Benutzer den gew&uuml;nschten Ort ausw&auml;hlen kann. Liefert die API keinen Treffer, gibt die Funktion <b>Nothing<\/b> zur&uuml;ck. Listing 1 zeigt die vollst&auml;ndige Implementierung.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>PLZLookup(strPLZ<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> strLand<span style=\"color:blue;\"> As String<\/span> = \"de\")<span style=\"color:blue;\"> As Object<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strURL<span style=\"color:blue;\"> As String<\/span>, strResponse<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intStatus<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>objJson<span style=\"color:blue;\"> As Object<\/span>, objPlaces<span style=\"color:blue;\"> As Object<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>dicErgebnis<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> dictionary\r\n     <span style=\"color:blue;\">Dim <\/span>intIndex<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strAuswahl<span style=\"color:blue;\"> As String<\/span>, strListe<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     strURL = \"https:\/\/api.zippopotam.us\/\" & strLand & \"\/\" & strPLZ\r\n     intStatus = HTTPRequest(strURL, \"GET\", strResponse)\r\n     Select Case intStatus\r\n         <span style=\"color:blue;\">Case <\/span>200\r\n             <span style=\"color:blue;\">Set<\/span> objJson = ParseJson(strResponse)\r\n             <span style=\"color:blue;\">Set<\/span> objPlaces = objJson.Item(\"places\")\r\n             <span style=\"color:blue;\">If <\/span>objPlaces.Count &gt; 1<span style=\"color:blue;\"> Then<\/span>\r\n                 'Mehrere Orte: Auswahl anzeigen\r\n                 strListe = \"Es gibt mehrere Orte\" & \" f&uuml;r die PLZ \" & strPLZ & \":\" & <span style=\"color:blue;\">vbCrLf<\/span>\r\n                 For i = 1 To objPlaces.Count\r\n                     strListe = strListe & \"[\" & i & \"] \" & objPlaces.Item(i).Item(\"place name\") & <span style=\"color:blue;\">vbCrLf<\/span>\r\n                 <span style=\"color:blue;\">Next<\/span> i\r\n                 strListe = strListe & \"W&auml;hle den gew&uuml;nschten\" & \" Ort aus (1-\" & objPlaces.Count & \"):\"\r\n                 strAuswahl = InputBox(strListe, \"PLZ-Auswahl\", \"1\")\r\n                 <span style=\"color:blue;\">If <\/span>strAuswahl = \"\"<span style=\"color:blue;\"> Then<\/span>\r\n                     'Abbruch durch Benutzer\r\n                     <span style=\"color:blue;\">Set<\/span> PLZLookup = Nothing\r\n                     <span style=\"color:blue;\">Exit Function<\/span>\r\n                 <span style=\"color:blue;\">End If<\/span>\r\n                 intIndex = Val(strAuswahl)\r\n                 <span style=\"color:blue;\">If <\/span>intIndex &lt; 1 Or intIndex &gt; objPlaces.Count<span style=\"color:blue;\"> Then<\/span>\r\n                     intIndex = 1\r\n                 <span style=\"color:blue;\">End If<\/span>\r\n             <span style=\"color:blue;\">Else<\/span>\r\n                 intIndex = 1\r\n             <span style=\"color:blue;\">End If<\/span>\r\n             dicErgebnis.Add \"Ort\", objPlaces.Item(intIndex).Item(\"place name\")\r\n             dicErgebnis.Add \"Bundesland\", objPlaces.Item(intIndex).Item(\"state\")\r\n             dicErgebnis.Add \"Breitengrad\", objPlaces.Item(intIndex).Item(\"latitude\")\r\n             dicErgebnis.Add \"Laengengrad\", objPlaces.Item(intIndex).Item(\"longitude\")\r\n             <span style=\"color:blue;\">Set<\/span> PLZLookup = dicErgebnis\r\n         <span style=\"color:blue;\">Case <\/span>404\r\n             'PLZ nicht gefunden\r\n             <span style=\"color:blue;\">Set<\/span> PLZLookup = Nothing\r\n         <span style=\"color:blue;\">Case Else<\/span>\r\n             <span style=\"color:blue;\">Set<\/span> PLZLookup = Nothing\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Die Funktion PLZLookup ruft die API auf und zeigt bei mehreren Orten eine Auswahlbox an.<\/span><\/b><\/p>\n<p>Die Funktion baut zun&auml;chst die URL zusammen und &uuml;bergibt sie an <b>HTTPRequest<\/b>. Im Erfolgsfall parst sie die Antwort mit <b>ParseJson<\/b> und legt das <b>places<\/b>-Array in der Variable <b>objPlaces<\/b> ab.<\/p>\n<p>Enth&auml;lt dieses mehr als ein Element, stellt die Funktion eine nummerierte Liste aller Ortsnamen zusammen und zeigt diese in einer <b>InputBox<\/b> an. Der Benutzer gibt die gew&uuml;nschte Nummer ein &#8211; bei ung&uuml;ltiger Eingabe wird automatisch der erste Eintrag verwendet, bei Abbruch gibt die Funktion <b>Nothing<\/b> zur&uuml;ck.<\/p>\n<p>Enth&auml;lt das Array nur ein Element, wird <b>intIndex<\/b> direkt auf 1 gesetzt. Anschlie&szlig;end f&uuml;llt die Funktion das <b>Dictionary<\/b> mit den vier Feldern des gew&auml;hlten Eintrags.<\/p>\n<p>Das Dictionary enth&auml;lt dann die Elemente <b>Ort<\/b>, <b>Bundesland<\/b>, <b>Breitengrad <\/b>und <b>L&auml;ngengrad<\/b>.<\/p>\n<p>Ein Beispielaufruf sieht wie folgt aus. Hier holen wir das <b>Dictionary<\/b>-Objekt mit dem Ergebnis und geben den Wert des Eintrags <b>Ort <\/b>aus:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Test_PLZLookup()\r\n     <span style=\"color:blue;\">Dim <\/span>dic<span style=\"color:blue;\"> As <\/span>Scripting.Dictionary\r\n     <span style=\"color:blue;\">Set<\/span> dic = PLZLookup(\"47137\")\r\n     <span style=\"color:blue;\">Debug.Print<\/span> dic(\"Ort\")\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Einzelnen Datensatz aktualisieren<\/h2>\n<p>Mit <b>PLZLookup<\/b> im Gep&auml;ck ist die Prozedur zum Aktualisieren eines Datensatzes &uuml;berschaubar. Die Prozedur <b>AdresseAktualisieren<\/b> in Listing 2 nimmt eine PLZ entgegen, ruft die Funktion auf und schreibt die Ergebnisse per DAO in die Tabelle.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>AdresseAktualisieren(strPLZ<span style=\"color:blue;\"> As String<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>dicErgebnis<span style=\"color:blue;\"> As Object<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> dicErgebnis = PLZLookup(strPLZ)\r\n     <span style=\"color:blue;\">If <\/span>dicErgebnis Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"PLZ \" & strPLZ & \" nicht gefunden.\"\r\n         <span style=\"color:blue;\">Exit Sub<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblAdressen WHERE PLZ = '\" & strPLZ & \"'\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         rst.Edit\r\n         rst!Ort = dicErgebnis.Item(\"Ort\")\r\n         rst!Bundesland = dicErgebnis.Item(\"Bundesland\")\r\n         rst!Breitengrad = dicErgebnis.Item(\"Breitengrad\")\r\n         rst!Laengengrad = dicErgebnis.Item(\"Laengengrad\")\r\n         rst.Update\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     rst.Close\r\n     <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Prozedur zum Aktualisieren aller Datens&auml;tze mit einer bestimmten PLZ<\/span><\/b><\/p>\n<p>Die Prozedur &ouml;ffnet ein Recordset mit allen Datens&auml;tzen, deren <b>PLZ<\/b>-Feld den gesuchten Wert enth&auml;lt, und schreibt die vier Felder in einer Schleife in jeden Treffer. Damit werden auch mehrere Datens&auml;tze mit derselben PLZ in einem Rutsch aktualisiert.<\/p>\n<h2>Alle leeren Datens&auml;tze auf einmal aktualisieren<\/h2>\n<p>In der Praxis m&ouml;chte man nicht jede PLZ einzeln aufrufen, sondern alle Datens&auml;tze, bei denen der Ort noch fehlt, in einem Durchlauf erg&auml;nzen. Listing 3 zeigt, wie das gelingt.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>AlleAktualisieren()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>dicErgebnis<span style=\"color:blue;\"> As Object<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strLetztePLZ<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblAdressen WHERE Ort IS NULL ORDER BY PLZ\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         <span style=\"color:blue;\">If <\/span>rst!PLZ &lt;&gt; strLetztePLZ<span style=\"color:blue;\"> Then<\/span>\r\n             strLetztePLZ = rst!PLZ\r\n             <span style=\"color:blue;\">Set<\/span> dicErgebnis = PLZLookup(strLetztePLZ)\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> dicErgebnis Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n             rst.Edit\r\n             rst!Ort = dicErgebnis.Item(\"Ort\")\r\n             rst!Bundesland = dicErgebnis.Item(\"Bundesland\")\r\n             rst!Breitengrad = dicErgebnis.Item(\"Breitengrad\")\r\n             rst!Laengengrad = dicErgebnis.Item(\"Laengengrad\")\r\n             rst.Update\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     rst.Close\r\n     <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n     <span style=\"color:blue;\">MsgBox<\/span> \"Fertig.\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Alle Datens&auml;tze ohne Ort in einem Durchlauf aktualisieren.<\/span><\/b><\/p>\n<p>Die Prozedur liest alle Datens&auml;tze, bei denen <b>Ort<\/b> leer ist, nach PLZ sortiert ein. Die Variable <b>strLetztePLZ<\/b> merkt sich die zuletzt abgefragte PLZ. Taucht dieselbe PLZ mehrfach auf, wird die API nicht erneut aufgerufen &#8211; das Ergebnis aus <b>dicErgebnis<\/b> liegt noch vor und wird direkt wiederverwendet.<\/p>\n<p>Dadurch schonen wir die API und verringern die Laufzeit sp&uuml;rbar.<\/p>\n<h2>Einschub: Ung&uuml;ltige PLZ abfangen<\/h2>\n<p>Gibt der Benutzer eine PLZ ein, die die API nicht kennt, antwortet der Dienst mit dem Statuscode 404.<\/p>\n<p><b>PLZLookup<\/b> gibt in diesem Fall <b>Nothing<\/b> zur&uuml;ck, und die aufrufende Prozedur pr&uuml;ft darauf mit <b>If dicErgebnis Is Nothing<\/b>. Das ist die korrekte Methode, um auf ein nicht gesetztes Objekt zu pr&uuml;fen &#8211; ein Vergleich mit <b>= Nothing<\/b> funktioniert in VBA nicht.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Artikel hat gezeigt, wie wir mit wenigen Zeilen VBA-Code eine &ouml;ffentliche Rest-API ohne jede Registrierung ansprechen, die JSON-Antwort mit <b>ParseJson<\/b> auslesen und die Ergebnisse direkt in eine Access-Tabelle schreiben. Der Trick mit <b>strLetztePLZ<\/b> zeigt dabei, wie man unn&ouml;tige API-Aufrufe vermeidet.<\/p>\n<p>Im n&auml;chsten Artikel greifen wir auf eine API zu, die eine Authentifizierung erfordert. Wir zeigen, wie wir einen API-Key sicher in der Windows-Registry ablegen und ihn beim Aufruf als <b>Authorization<\/b>-Header &uuml;bergeben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Grundlagenartikel zu Rest-APIs haben wir gezeigt, wie das Konzept funktioniert und wie eine wiederverwendbare HTTPRequest-Funktion aussieht. Jetzt setzen wir das Gelernte das erste Mal gegen eine echte API ein: Wir fragen zu einer deutschen Postleitzahl den zugeh&ouml;rigen Ort und die Koordinaten ab &#8211; ohne Anmeldung, ohne API-Key und vollkommen kostenlos. Nebenbei lernen wir, wie wir die JSON-Antwort mit wenigen Handgriffen auslesen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022026,662026,44000012],"tags":[],"yst_prominent_words":[],"class_list":["post-55000507","post","type-post","status-publish","format-standard","hentry","category-66022026","category-662026","category-Interaktiv"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Im Grundlagenartikel zu Rest-APIs haben wir gezeigt, wie das Konzept funktioniert und wie eine wiederverwendbare HTTPRequest-Funktion aussieht. Jetzt setzen wir das Gelernte das erste Mal gegen eine echte API ein: Wir fragen zu einer deutschen Postleitzahl den zugeh\u00f6rigen Ort und die Koordinaten ab - ohne Anmeldung, ohne API-Key und vollkommen kostenlos. Nebenbei lernen wir, wie wir die JSON-Antwort mit wenigen Handgriffen auslesen.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andr\u00e9 Minhorst\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"PLZ-Lookup per Rest-API - Visual Basic Entwickler\" \/>\n\t\t<meta property=\"og:description\" content=\"Im Grundlagenartikel zu Rest-APIs haben wir gezeigt, wie das Konzept funktioniert und wie eine wiederverwendbare HTTPRequest-Funktion aussieht. Jetzt setzen wir das Gelernte das erste Mal gegen eine echte API ein: Wir fragen zu einer deutschen Postleitzahl den zugeh\u00f6rigen Ort und die Koordinaten ab - ohne Anmeldung, ohne API-Key und vollkommen kostenlos. Nebenbei lernen wir, wie wir die JSON-Antwort mit wenigen Handgriffen auslesen.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-05-16T18:26:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"-001-11-30T00:00:00+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"PLZ-Lookup per Rest-API - Visual Basic Entwickler\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Im Grundlagenartikel zu Rest-APIs haben wir gezeigt, wie das Konzept funktioniert und wie eine wiederverwendbare HTTPRequest-Funktion aussieht. Jetzt setzen wir das Gelernte das erste Mal gegen eine echte API ein: Wir fragen zu einer deutschen Postleitzahl den zugeh\u00f6rigen Ort und die Koordinaten ab - ohne Anmeldung, ohne API-Key und vollkommen kostenlos. Nebenbei lernen wir, wie wir die JSON-Antwort mit wenigen Handgriffen auslesen.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#blogposting\",\"name\":\"PLZ-Lookup per Rest-API - Visual Basic Entwickler\",\"headline\":\"PLZ-Lookup per Rest-API\",\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/a48684ccb6174784a2f50e80d566447e\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#articleImage\"},\"datePublished\":\"2026-04-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"inLanguage\":\"de-DE\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#webpage\"},\"articleSection\":\"2\\\/2026, 2026, Interaktiv\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vbentwickler.de\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2026\\\/#listItem\",\"name\":\"2026\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2026\\\/#listItem\",\"position\":2,\"name\":\"2026\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2026\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2026\\\/2\\\/2026\\\/#listItem\",\"name\":\"2\\\/2026\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2026\\\/2\\\/2026\\\/#listItem\",\"position\":3,\"name\":\"2\\\/2026\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2026\\\/2\\\/2026\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#listItem\",\"name\":\"PLZ-Lookup per Rest-API\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2026\\\/#listItem\",\"name\":\"2026\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#listItem\",\"position\":4,\"name\":\"PLZ-Lookup per Rest-API\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2026\\\/2\\\/2026\\\/#listItem\",\"name\":\"2\\\/2026\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/cropped-header_vbe-1.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#organizationLogo\",\"width\":664,\"height\":225},\"image\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Andr\\u00e9 Minhorst\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#webpage\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/\",\"name\":\"PLZ-Lookup per Rest-API - Visual Basic Entwickler\",\"description\":\"Im Grundlagenartikel zu Rest-APIs haben wir gezeigt, wie das Konzept funktioniert und wie eine wiederverwendbare HTTPRequest-Funktion aussieht. Jetzt setzen wir das Gelernte das erste Mal gegen eine echte API ein: Wir fragen zu einer deutschen Postleitzahl den zugeh\\u00f6rigen Ort und die Koordinaten ab - ohne Anmeldung, ohne API-Key und vollkommen kostenlos. Nebenbei lernen wir, wie wir die JSON-Antwort mit wenigen Handgriffen auslesen.\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/PLZLookup_per_RestAPI\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"datePublished\":\"2026-04-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"PLZ-Lookup per Rest-API - Visual Basic Entwickler","description":"Im Grundlagenartikel zu Rest-APIs haben wir gezeigt, wie das Konzept funktioniert und wie eine wiederverwendbare HTTPRequest-Funktion aussieht. Jetzt setzen wir das Gelernte das erste Mal gegen eine echte API ein: Wir fragen zu einer deutschen Postleitzahl den zugeh\u00f6rigen Ort und die Koordinaten ab - ohne Anmeldung, ohne API-Key und vollkommen kostenlos. Nebenbei lernen wir, wie wir die JSON-Antwort mit wenigen Handgriffen auslesen.","canonical_url":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#blogposting","name":"PLZ-Lookup per Rest-API - Visual Basic Entwickler","headline":"PLZ-Lookup per Rest-API","author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"},"image":{"@type":"ImageObject","url":"http:\/\/vg08.met.vgwort.de\/na\/a48684ccb6174784a2f50e80d566447e","@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#articleImage"},"datePublished":"2026-04-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00","inLanguage":"de-DE","mainEntityOfPage":{"@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#webpage"},"isPartOf":{"@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#webpage"},"articleSection":"2\/2026, 2026, Interaktiv"},{"@type":"BreadcrumbList","@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","position":1,"name":"Home","item":"https:\/\/vbentwickler.de","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2026\/#listItem","name":"2026"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2026\/#listItem","position":2,"name":"2026","item":"https:\/\/vbentwickler.de\/category\/2026\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2026\/2\/2026\/#listItem","name":"2\/2026"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2026\/2\/2026\/#listItem","position":3,"name":"2\/2026","item":"https:\/\/vbentwickler.de\/category\/2026\/2\/2026\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#listItem","name":"PLZ-Lookup per Rest-API"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2026\/#listItem","name":"2026"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#listItem","position":4,"name":"PLZ-Lookup per Rest-API","previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2026\/2\/2026\/#listItem","name":"2\/2026"}}]},{"@type":"Organization","@id":"https:\/\/vbentwickler.de\/#organization","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","url":"https:\/\/vbentwickler.de\/","logo":{"@type":"ImageObject","url":"https:\/\/vbentwickler.de\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#organizationLogo","width":664,"height":225},"image":{"@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author","url":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","width":96,"height":96,"caption":"Andr\u00e9 Minhorst"}},{"@type":"WebPage","@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#webpage","url":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/","name":"PLZ-Lookup per Rest-API - Visual Basic Entwickler","description":"Im Grundlagenartikel zu Rest-APIs haben wir gezeigt, wie das Konzept funktioniert und wie eine wiederverwendbare HTTPRequest-Funktion aussieht. Jetzt setzen wir das Gelernte das erste Mal gegen eine echte API ein: Wir fragen zu einer deutschen Postleitzahl den zugeh\u00f6rigen Ort und die Koordinaten ab - ohne Anmeldung, ohne API-Key und vollkommen kostenlos. Nebenbei lernen wir, wie wir die JSON-Antwort mit wenigen Handgriffen auslesen.","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/vbentwickler.de\/#website"},"breadcrumb":{"@id":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/#breadcrumblist"},"author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"creator":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"datePublished":"2026-04-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00"},{"@type":"WebSite","@id":"https:\/\/vbentwickler.de\/#website","url":"https:\/\/vbentwickler.de\/","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","inLanguage":"de-DE","publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","og:type":"article","og:title":"PLZ-Lookup per Rest-API - Visual Basic Entwickler","og:description":"Im Grundlagenartikel zu Rest-APIs haben wir gezeigt, wie das Konzept funktioniert und wie eine wiederverwendbare HTTPRequest-Funktion aussieht. Jetzt setzen wir das Gelernte das erste Mal gegen eine echte API ein: Wir fragen zu einer deutschen Postleitzahl den zugeh\u00f6rigen Ort und die Koordinaten ab - ohne Anmeldung, ohne API-Key und vollkommen kostenlos. Nebenbei lernen wir, wie wir die JSON-Antwort mit wenigen Handgriffen auslesen.","og:url":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/","og:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","og:image:secure_url":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","article:published_time":"2026-05-16T18:26:28+00:00","article:modified_time":"-001-11-30T00:00:00+00:00","twitter:card":"summary_large_image","twitter:title":"PLZ-Lookup per Rest-API - Visual Basic Entwickler","twitter:description":"Im Grundlagenartikel zu Rest-APIs haben wir gezeigt, wie das Konzept funktioniert und wie eine wiederverwendbare HTTPRequest-Funktion aussieht. Jetzt setzen wir das Gelernte das erste Mal gegen eine echte API ein: Wir fragen zu einer deutschen Postleitzahl den zugeh\u00f6rigen Ort und die Koordinaten ab - ohne Anmeldung, ohne API-Key und vollkommen kostenlos. Nebenbei lernen wir, wie wir die JSON-Antwort mit wenigen Handgriffen auslesen.","twitter:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png"},"aioseo_meta_data":{"post_id":"55000507","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2026-05-16 17:11:46","updated":"2026-05-16 17:11:46","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2026\/\" title=\"2026\">2026<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2026\/2\/2026\/\" title=\"2\/2026\">2\/2026<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tPLZ-Lookup per Rest-API\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/vbentwickler.de"},{"label":"2026","link":"https:\/\/vbentwickler.de\/category\/2026\/"},{"label":"2\/2026","link":"https:\/\/vbentwickler.de\/category\/2026\/2\/2026\/"},{"label":"PLZ-Lookup per Rest-API","link":"https:\/\/vbentwickler.de\/PLZLookup_per_RestAPI\/"}],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000507"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000507\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000507"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}