Closed gustawdaniel closed 6 years ago
Ja bym się wstrzymał z korzystania z nieudokumentowanych metod. Struktura odpowiedzi z tego co widzę jest zupełnie inna niż przy POST / PUT. Może to być wina tego, że korzystasz z wersji API: application/vnd.allegro.public.v1+json a nie jak dokumentacja wskazuje dla całej sekcji z API oferty: application/vnd.allegro.beta.v1+json (choć tutaj konieczny jest już chyba nagłówek Authorization bo wali 406). Ja bym rozważył skorzystanie z metody WebAPI: https://allegro.pl/webapi/documentation.php/show/id,1342#method-input
Jeśli jednak mimo wszystko chcesz korzystać tylko z REST API to widzę że dodanie parametru pageToken z odpowiedzi rozwiązuje sprawę:
curl -H "Accept: application/vnd.allegro.public.v1+json" -H "User-Agent: MyApp/1.0 (Client-Id 9ff2ad98-f5b0-4f86-9613-833f9129af29) Linux/x86_64 (CentOS)" "https://api.allegro.pl/offers?seller.id=10657099&limit=1" | jq '.offers[] | "(.id) (.name)"'
curl -H "Accept: application/vnd.allegro.public.v1+json" -H "User-Agent: MyApp/1.0 (Client-Id 9ff2ad98-f5b0-4f86-9613-833f9129af29) Linux/x86_64 (CentOS)" "https://api.allegro.pl/offers?seller.id=10657099&pageToken=eyJwIjpbIjIiXSwibGltaXQiOlsiMSJdfQ==" | jq '.offers[] | "(.id) (.name)"'
Parametr ten oczywiście możesz sobie sam generować bo to nic innego jak json zakodowany base64:
eyJwIjpbIjIiXSwibGltaXQiOlsiMSJdfQ== --> {"p":["2"],"limit":["1"]}
Dzięki. Zadziałało.
Wysyłam dwa żądania HTTP które różnią się jedynie parametrem
offset
:Pierwsze z
offset=0
Drugie z
offset=3
W obu przypadkach wynikiem działania tej komendy jest ten sam tekst:
W powyższym przykładzie korzystałem z programów
httpie
- do wysyłania żądań orazjq
- do wycinania danych z jsona.Być może kluczem do poprawnego stronicowania tego zasobu jest
pageToken.next
- własność odpowiedzi, która zwracana jest w pełnej nie okrojonej przezjq
odpowiedziNiestety w dokumentacjach:
nie znalazłem informacji o
pageToken.next
.