Autor Zpráva
igid26
Profil
Zdravím,
znažím sa ťahať údaje z webu, ktorý poskytuje API na štátne pohľadávky. Podklady k API sú na tomto odkaze: sudne.pohladavkystatu.sk/opendata/swagger/index.html#
API teda poskytuje stránkový zoznam pohľadávok. Stránkovanie je nastavené na 5000 položiek. Ja by som však potreboval vyhľadávať vo všetkých položkách. Potrebujem docieliť to, aby som dokázal na základe mena a adresy vyhľadať, či sa subjekt nachádza v databáze.

Stránkovanie funguje na základe parametru skip, ktorý udáva koľko stránok sa má vynechať.

príklad sudne.pohladavkystatu.sk/opendata/v1/pohladavky/?skip=5000

Vopred Ďakujem za odpoveď.
juriad
Profil
Máš několik možnosti:
1) vždy prolistovat všechny stránky
2) výsledky si cachovat a prohledávat cache
3) napíchnout se na nějaké jiné jejich API a výsledek si parsovat; například sudne.pohladavkystatu.sk/sk/vyhladavanie?query=naša&search=1&display=text
4) napsat jim, aby vystavili vyhledávací API
5) nechat se jimi zaměstnant a to API si napsat sám
igid26
Profil
Ahoj juriad:,

1) vždy prolistovat všechny stránky - no veď ja by som práveže potreboval prísť nato ako automaticky prelistovať všetky stránky
juriad
Profil
Jednoduše budeš posílat dotazy, dokud některý nevrátí méně než 5000 záznamů:

https://sudne.pohladavkystatu.sk/opendata/v1/pohladavky/?skip=5000
https://sudne.pohladavkystatu.sk/opendata/v1/pohladavky/?skip=10000
https://sudne.pohladavkystatu.sk/opendata/v1/pohladavky/?skip=15000
https://sudne.pohladavkystatu.sk/opendata/v1/pohladavky/?skip=20000
...

Například takto:
$list = [];
$skip = 0
do {
  $fetched = fetch("https://sudne.pohladavkystatu.sk/opendata/v1/pohladavky/?skip=$skip") # tvoje funkce vracející pole
  $list = array_merge($list, $fetched);
  $skip += 5000;
} while(count($fetched) == 5000);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0