Odeslání GET požadavku na REST API a zpracování JSON
- thm
- Člen | 148
Čau, potřeboval bych asi trochu nakopnout – neznám úplně moc
souvislostí.
Potřeboval bych poslat požadavek na REST api a zpracovat JSON.
Nette Copilot mi poradil toto (níže) – což by bylo skvělé, ale
(pravděpodobně – nevím kde ověřit) Nette\Http\Client již není (? resp.
IDE nenašeptává). Mohl byste mě prosím někdo trochu nasměrovat?
class ApiService
{
public function fetchData(string $url): array
{
$client = new Client();
// Odeslání GET požadavku
$response = $client->get($url);
// Kontrola HTTP status kódu
if ($response->getCode() !== 200) {
throw new \RuntimeException('API request failed with status code: ' . $response->getCode());
}
// Dekódování JSON odpovědi
$data = json_decode($response->getBody(), true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new \RuntimeException('Failed to decode JSON: ' . json_last_error_msg());
}
return $data;
}
}
- Infanticide0
- Člen | 110
Guzzlette je cesta (můžeš data stáhnout i přes cURL nebo vlastní Guzzle service)
Po stažení dat Nette Utils
Editoval Infanticide0 (21. 1. 18:07)
- Marek Bartoš
- Nette Blogger | 1281
Nette\Http\Client není a nikdy nebyl, copilot halucinuje.
Zkus symfony/http-client, ze všech existujících možností (guzzle, symfony,
psr adapter, httpplug) mi přišel nejjednodušší
- Ozzrel
- Generous Backer | 55
Já mám takhle řešeno a dělá to co asi chceš:
private function ServerPost($data, $url)
{
$options = [
'http' => [
'method' => 'POST',
'content' => json_encode($data),
'header' => "Content-Type: application/json\r\n" . "Accept: application/json\r\n",
],
];
$context = stream_context_create($options);
if (!$result = @file_get_contents($url.'/'.self::TOKEN, false, $context)) {
return false;
}
return json_decode($result);
}