Kiemelt kép

Laravel 7 - HTTP kliens

A Laravel 7-es főverziója az előző posztban tárgyalt Fluent sztring műveletek mellett egy nagyszerű HTTP klienssel is bővült. Mostantól az egyszerűbb(!) API kéréseket tudjuk intézni külső könyvtárak (pl. Guzzle), a beépített cURL könyvtár vagy file_get_contents nevű nem éppen erre kitalált függvény nélkül is.

A Laravel fejlesztői beépítettek egy Guzzle-re épülő minimal API-t, amivel az egyszerűbb kliens műveleteket el tudjuk végezni. A PHP-nál még a mai napig a curl vagy a file_get_contents kikerülhetetlen, számtalan példakód eleve erre épít és nagyon kevés esetben látni a Guzzle-t vagy más könyvtárakat. Az új Laravel HTTP Client 1-2 soros lehetőséget biztosít a legtöbb művelet elvégzésére, bár azt rögtön az elején leszögezi a dokumentáció, hogy nem céljuk a Guzzle teljes tudásának implementálása, arra ott a Guzzle.

A könyvtár az Illuminate/Http/Client namespace-ben kapott helyet, de érdemes odafigyelni, mert hasonló elnevezések vannak a sima Illuminate/Http osztályok között is. De többnyire csak az Illuminate\Support\Facades\Http facade osztályra lesz szükségünk.

Nézzük néhány példát!

A fenti példa egy egyszerű GET request, amely segítségével a World Time API-ból lekérdezzük az európai időzónák listáját. Ez egy JSON tömböt ad vissza:

["Europe/Amsterdam","Europe/Andorra", … ] 

A throw() meghívása annyit eredményez, hogy ha nem 200-as (2xx) státuszkódot kapunk, akkor egy RequestException-t dob. Ha kézzel akarjuk kezelni státuszkód ellenőrzését, akkor erre is van lehetőség, le tudjuk kérdezni a hiba típusát több különböző metódussal.

POST kérést sem sokkal bonyolultabb írni. A Http::post() első paramétere lesz a URL, a második az adattömb, ami application/json-ként kerül elküldésre.

A könyvtár támogatja az egyedi headerök, tokenek, basic és egyéb típusú autentikációk, timeout-ok kezelését. Tudunk multipart és form alapú kérést is küldeni, tehát pl. fájlok csatolására is van lehetőség. 

Amire viszont nincs megoldás (egyelőre? vagy csak én nem találtam meg a megoldást), az a PROXY-n keresztüli request (proxy URL, autentikációs adatok megadása), bár vannak megoldások a PendingRequest osztályban Guzzle opciók megadására, mindenesetre, ha valami bonyolultabb kell, akkor már inkább Guzzle egyszerűbben kezelhető.

A hivatalos leírás itt található.

Ha hasznos volt ez a cikk, kérlek oszd meg másokkal is. Köszönöm!

Laravel logo © Taylor Otwell


Ha nem szeretnél lemaradni a hasonló posztokról, kövesd a blog Facebook oldalát!