NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Google Places for Laravel

Spracovanie chýb

Chyby vyhadzujú RoundlyConsulting\GooglePlaces\Exceptions\PlacesException s typovanými metódami, podľa ktorých rozlíšite, čo zlyhalo:

use RoundlyConsulting\GooglePlaces\Exceptions\PlacesException;
use RoundlyConsulting\GooglePlaces\Facades\GooglePlaces;

try {
    $predictions = GooglePlaces::autocomplete('Coffee');
} catch (PlacesException $e) {
    if ($e->isRateLimited())      { /* back off */ }
    elseif ($e->isDenied())       { /* check key / billing / enabled APIs */ }
    elseif ($e->isInvalidRequest()) { /* fix the request */ }
    elseif ($e->isUnreachable())  { /* timeout, DNS failure, refused connection */ }

    report($e); // $e->googleStatus(), $e->googleReason(), $e->googleErrorMessage()
}

Kľúč sa do správ nedostane

API kľúč sa nikdy neobjaví v správe výnimky, v udalosti ani v kľúči cache. Každá správa sa začierni — chybový text od Google aj správa o zlyhaní prenosu, ktorá končí URL požiadavky, kde Geocoding API nesie svoj key=. Nastavený kľúč sa všade, kde sa objaví, skryje okrem posledných štyroch znakov a rovnako aj hodnota každého parametra key=, token= či signature= v URL; hodnota s ôsmimi a menej znakmi sa skryje celá. $e->response je surová HTTP odpoveď vrátane URL požiadavky — neserializujte ju do reportov.

Kontroly stavu

Kontroly zjednocujú tvary chýb všetkých troch Google API a isUnreachable() odlíši zlyhanie siete od odpovede:

KontrolaStavy Google
isRateLimited()RESOURCE_EXHAUSTED, OVER_QUERY_LIMIT — a vždy pri RateLimitExceededException
isDenied()PERMISSION_DENIED, UNAUTHENTICATED, REQUEST_DENIED, OVER_DAILY_LIMIT — alebo googleReason týkajúci sa kľúča či projektu, napr. API_KEY_INVALID, bez ohľadu na stav
isInvalidRequest()INVALID_ARGUMENT, INVALID_REQUEST — a nie je denied
isUnreachable()Bez stavu Google — Google nebol vôbec dostupný (timeout, zlyhanie DNS, odmietnuté spojenie)

Detail chyby

catch (PlacesException $e) {
    $e->getCode();              // HTTP status of the failed response (0 for local errors)
    $e->googleStatus();         // e.g. "PERMISSION_DENIED", "OVER_QUERY_LIMIT"
    $e->googleReason();         // e.g. "API_KEY_INVALID" — null for the Geocoding API
    $e->googleErrorMessage();   // Google's own error message, if any
    $e->isUnreachable();        // true for a timeout, DNS failure or refused connection
    $e->response;               // ?Illuminate\Http\Client\Response — raw, request URL included
}

Kedy sa vyhadzuje

Továrenská metódaKedy sa vyhodí
fromResponse()Google vrátil neúspešnú odpoveď. Nesie HTTP stav, stav Google a správu.
connectionFailed()Google nebol dostupný ani po nastavených opakovaniach — isUnreachable() vráti true.
missingApiKey()Nie je nastavený API kľúč — vyhodí sa pred akoukoľvek HTTP požiadavkou.
tooManyPrimaryTypes()AutocompleteQuery s viac ako 5 primárnymi typmi.
tooManyRegionCodes()AutocompleteQuery s viac ako 15 kódmi regiónov.
invalidRadius()Polomer NearbySearchQuery mimo 0–50000 m.
sessionFinished()Billing session použitá znova po volaní details().
routeNotFound()distance() narazil na cieľ bez dostupnej trasy.
RateLimitExceededException::for()API s rate limitom by čakalo dlhšie ako jeho max_wait.

Timeouty a opakovania

Každé volanie je ohraničené hodnotami http.timeout a http.connect_timeout. Zlyhania spojenia (timeout, DNS) sa opakujú http.retries-krát s pauzou http.retry_delay; chyby vrátené od Google sa nikdy neopakujú — okamžite sa prejavia ako PlacesException. Oba timeouty sú celé sekundy, aspoň 1: 0 (bez timeoutu) alebo nezmysel ako five vyhodí InvalidConfigurationException, namiesto toho, aby požiadavka zostala neohraničená.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.