W tym wpisie przedstawię przykład odwoływania się do zasobów Allegro za pomocą biblioteki Httpful.
Jak zaznacza sam autor, biblioteka charakteryzuje się prostą obsługą i wsparciem dla łańcuchowych wiązań metod (chainable).
Głównym założeniem jest uproszczenie wywołań HTTP przez zrezygnowanie z bezpośredniego odwoływania się do CURL.
Instalacja
Bibliotekę możesz ściągnąć bezpośrednio ze strony:
https://github.com/nategood/httpful
Ja użyłem Composera i zainstalowałem bibliotekę w katalogu:
C:\htdocs\Allegro
za pomocą polecenia:
composer require "nategood/httpful"
Wynik:
c:\htdocs\Allegro>composer require "nategood/httpful" Using version ^0.2.20 for nategood/httpful ./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) - Installing nategood/httpful (0.2.20) Downloading: 100% Writing lock file Generating autoload files c:\htdocs\Allegro>
Przykład
Jako przykład posłuży nam zasób ratings-api, który posiada dwie metody:
- get /ratings-api/sellers/ratings
- get /ratings-api/sellers/summary
My użyjemy tej pierwszej. Szczegóły na stronie:
https://developer.allegroapi.io/documentation/
Zakładam, że posiadasz już Token dostępowy (Access Token) i klucz Api (Api-Key). Niniejszy wpis nie traktuje o autoryzacji aplikacji.
Odsyłam do:
http://allerest.pl/logowanie-do-allegro-rest-api/
Kod źródłowy
<?php // Jeśli używasz Composera require __DIR__ . '/vendor/autoload.php'; // Standardowy Autoloader // require(__DIR__ . '/../bootstrap.php'); use \Httpful\Request; try { $uri = 'https://allegroapi.io/ratings-api/sellers/ratings'; $request = Request::get($uri)->addHeaders([ 'Accept' => 'application/vnd.allegro.public.v2+json', 'Content-Type' => 'application/vnd.allegro.public.v2+json', 'Api-Key' => '[Api-Key]', 'Authorization' => 'Bearer [Access Token]' ])->send(); if ($request->hasBody()) { //var_dump($request->body); if ($request->code >= 300) { echo 'Serwer zwrócił następujące błędy:<br>'; foreach($request->body->errors as $error) { echo sprintf('- Message: %s, Code: %s<br>', $error->message, $error->code); } } else { echo "totalPages: " . $request->body->totalPages; } } else { echo 'Serwer nic nie zwrócił.'; } } catch (ConnectionErrorException $e) { echo $e->getMessage(); } catch (Exception $e) { echo $e->getMessage(); } ?>