I wanted to use Http facade in Laravel 5.8 but I noticed that Http facade is not included in this version of Laravel so I installed GuzzleHttp.
But now I don't know how to rewrite this code with this package:
public function getAddress(Request $request)
{
$response=Http::timeout(15)->withHeaders([
'Api-Key' => 'api-key',
])->get('https://api.sitename.org/v4/reverse',[
"lat"=>$request->input('latitude'),
"lng"=>$request->input('longitude')
]);
$address=$response->json()['formatted_address'];
return view('address.index',compact('address'));
}
So how can I properly rewrite this code using GuzzleHttp in order to use the Http
?
CodePudding user response:
Since guzzle follows psr-7 (I think) there is no builtin method to decode response other things or obvious to you I guess
try {
$client = new \GuzzleHttp\Client();
$response = $client->get('https://api.sitename.org/v4/reverse', [
RequestOptions::HEADERS => [
'Api-Key' => 'api-key',
],
RequestOptions::QUERY => [
"lat" => $request->input('latitude'),
"lng" => $request->input('longitude')
],
]);
$response = json_decode($response->getBody()->getContents(), true, 512, JSON_THROW_ON_ERROR);
dd($response);
} catch (ClientException $e) {
// Handle error here
}