Ich erkunde die Google APIs, hauptsächlich die Places API. Da die Anzahl der Anfragen an die Google Places-API auf 100.000 begrenzt ist, suche ich nach Möglichkeiten, die Anzahl der an die API gesendeten Anfragen zu minimieren. Ich dachte daran, eine Datenbank zu verwenden, um zuvor empfangene Antworten zu speichern, so dass ich sie in Zukunft ohne Anfragen an die API abrufen konnte und Anfragen an die API nur dann stellen würde, wenn die benötigten Daten nicht zuvor in meiner Datenbank gespeichert worden wären .
Gemäß den Nutzungsbedingungen für Google API, insbesondere dem Abschnitt 10.1.3 Einschränkungen beim Kopieren oder Datenexport , Es ist nicht erlaubt, Daten unbegrenzt zu speichern, aber es ist legal, sie vorübergehend zwischenzuspeichern:
Sie dürfen keine Inhalte vorab abrufen, zwischenspeichern oder speichern, mit der Ausnahme, dass Sie Folgendes speichern können: (i) begrenzte Mengen an Inhalten, um die Leistung Ihrer Google Maps API-Implementierung zu verbessern, wenn Sie dies vorübergehend tun (und kein Ereignis für mehr als 30 Kalendertage), sicher und in einer Weise, die die Nutzung des Inhalts außerhalb des Dienstes nicht erlaubt; und (ii) alle Inhalts-IDs oder Schlüssel, die Sie in der Google Maps API-Dokumentation speichern können. Beispielsweise dürfen Sie den Inhalt nicht verwenden, um eine unabhängige Datenbank mit "Orten" oder anderen lokalen Auflistungsinformationen zu erstellen.
Ich finde diesen Abschnitt nicht gut erklärt. Kann ich alle von der API empfangenen Daten 30 Tage lang in meiner Datenbank speichern oder nur IDs von Orten? Weil ich in einigen anderen Kontexten gelesen habe, dass es nur erlaubt ist, die IDs zu speichern. Ich habe es so verstanden: Ich kann Orts-IDs unbegrenzt speichern, kann aber die ganzen Daten nur für 30 Tage nutzen.
Da ich nur ein paar Tage über Google APIs gelesen habe, habe ich vielleicht eine Nutzungsdauer verpasst, daher wäre ich wirklich dankbar, wenn Sie mir helfen könnten.
Alle Vorschläge zur Minimierung der Anzahl von Aufrufen für die APIs oder zum Teilen von Erfahrungen mit realen Projekten, die diese APIs verwenden, werden sehr geschätzt. Auch wenn Sie mir einige alternative APIs vorschlagen könnten, die ähnliche Funktionalität bereitstellen könnten, wäre wirklich hilfreich.
Vielen Dank im Voraus!
Nach meinen Erfahrungen mit der Google Places-API ist Ihr Verständnis genau richtig. Lassen Sie mich die beiden Bestimmungen in meinen eigenen Worten erklären:
i) Ohne Vorabruf oder Neuverteilung außerhalb Ihrer Anwendung können Sie die API-Ergebnisse für bis zu 30 Tage zwischenspeichern.
ii) Sie können eine Orts-ID verwenden oder Ihre anwendungsspezifischen Daten eingeben, aber sonst nichts (z. B. wenn Ihre App "Check-in" -Plätze zur Verfügung stellt), können Sie eine Liste der Orts-IDs speichern ein Benutzerobjekt und suchen Sie die Orte nach ID, aber Sie können keine Liste aller Orte mit den Namen / Details von Google speichern).
Um die Anzahl der API-Aufrufe zu reduzieren und meine App zu beschleunigen, cache ich die in der Nähe befindlichen Ortsaufrufe in einem einfachen Schlüssel-Wert-Cache, wobei der Schlüssel das lat-lng-Paar ist, das auf eine bestimmte Genauigkeit gerundet wird Anrufe innerhalb eines bestimmten Radius werden den Cache treffen. Der Wert ist die gesamte JSON-Ergebniszeichenfolge. Hier ist mein Code, der Java auf Google App Engine läuft:
%Vor%Wie bei alternativen APIs würde ich vorschlagen, dass Sie sich Folgendes ansehen:
Yelp API - bietet Bar / Restaurant-Daten, die Google fehlt
Facebook API - einfach zu verwenden, wenn Sie ' Sie nutzen bereits das Facebook SDK
Factual: Orte Crosswalk - sammelt und normalisiert Daten aus vielen Quellen, einschließlich Facebook und Yelp, aber nicht Google
Momentan verwende ich nur die Google Places API, aber ich plane, Yelp oder Factual später hinzuzufügen, um die Ergebnisse für den Endbenutzer zu verbessern.
Tags und Links google-api google-places-api