Odeslání GET požadavku na REST API a zpracování JSON

thm
Člen | 148
+
0
-

Č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
+
+1
-

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
+
+3
-

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
+
0
-

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);
	}