Amikor webes munkáink során szükségünk lenne egy-egy jó API-ra, gyakran találkozhatunk azzal, hogy a számunkra izgalmas API-t
olyan kereskedelmi oldalak kínálják, melyek a használatért díjat kérnek. Vagy ha nem is kérnek díjat, az ingyenes használatot
akkor is regisztrációhoz kötik. Praktikusan azért, hogy az egy regisztrációhoz tartozó lekérdezések számát korlátozzák. Nincs
ebben semmi rendkívüli, hiszen ezek az oldalak éppen az API kínálatukból szeretnének megélni. Ám mindez egyáltalán nem jelenti
azt, hogy hasonló API-kat webprogramozóként mi magunk ne tudnánk készíteni. Akár fizetős helyett ingyenes változatban is. Vagy
éppen korlátlan használatra. Vagy éppen olyan API-t, amit hiába kerestünk, nem találtunk...
Ezen a lapon az infojegyzet.hu oldal által kínált ingyenes API-k összefoglalója és bemutatása olvasható,
melyeket jellemzően a fenti gondolatmenet ihletett. Jelenleg az alábbi 6 API érhető el az oldalon:
1. Közúti távolság két földrajzi hely között
2. Időjárás előrejelzés
3. Holdfázis
4. Valutaváltás
5. Domain foglaltság ellenőrzés
6. Az infojegyzet.hu látogatottsága
1. Közúti távolság két földrajzi hely között
A Google Maps grafikus felületén nagyon
könnyen, és ingyenesen megtudhatjuk két tetszőleges pont között az útvonal hosszát, sőt akár
az út megtételéhez szükséges időt is. Ám ha mindezt egy API-n keresztül szeretnénk megtenni,
pl. hogy a lehetőséget beépíthessük valamely saját honlapunkba, akkor ehhez a Google a
Distance Matrix API
nevű termékét ajánlja. Természetesen
nem ingyen.
Biztosan van, aki fizet is érte tényleg, pedig a Távolság API című oldalon korábban már áttekintettük,
miként készíthetünk magunknak hasonló API-t, teljesen ingyen.
Az alábbiakban egy frontend felületen keresztül megnézzük, hogyan is használható ez az általunk készített API a gyakorlatban.
Hogyan működik?
Az API működésének leírása, alapvető elvei és kellékei a Távolság API
című oldalon olvashatóak részletesen.
Hogyan kell használni?
A kipróbálás során tapasztalhatjuk, hogy az API mindössze két paramétert vár bemenetként:
from: az indulási hely
to: az érkezési hely
megadására szolgál - név szerint keresés, és cím szerinti keresés esetén egyaránt.
Név szerinti keresés esetén
megadható szinte bármilyen földrajzi hely, település, vagy annak része, egyéb nevezetesség, de akár intézménynév is;
utcanevek megadásakor azonban házszám szerepeltetésének nincs értelme, mert az itt nem kerül figyelembe vételre - ilyen igény esetén a cím szerinti keresést érdemes használni.
Cím szerint keresés esetén
a paraméterek részleteit - vagyis a települést, a közterület nevét és a házszámot - egy-egy | függőleges vonal (AltGr+W) választ el egymástól az API hívása során;
Budapesten belüli cím keresése esetén Budapest mellett a kerületet is kötelező megadni - római számmal jelölve;
a címkeresés alapvetően lakcímek adatbázisa alapján dolgozik, így intézményi címek keresése többnyire nem vezet sikerre;
az alábbi nyomógomb mutat egy példát a fenti keresőpanel helyes kitöltésére.
Érdekességként, és tesztelésképpen nézzünk néhány esetet arra is, ahol két helyszín között a közúti távolság jóval nagyobb, mint a
légvonalban mérhető távolság - vagyis amikor különböző okok miatt a kiindulási pontból a célpontba közúton eljutni csak jelentősebb kerülővel
lehet:
2. Időjárás előrejelzés
Ingyenes és regisztrációt sem igénylő meteorológiai API-t nem könnyű találni a neten, hiszen a meteorológiai
előrejelzések készítése egyrészt költséges, másrészt piaci értékük fizetőképes keresletet jelent.
Tanulmányi célra azonban az infojegyzet.hu az alábbi lehetőséget kínálja Budapest időjárásának előrejelzésére:
Tehát mivel az API tanulmányi célokat szolgál, így csupán egy leegyszerűsített változatot jelent a forrásul szolgáló,
de regisztrációt igénylő weatherapi.com API-jához képest.
Az egyszerűsítés az alábbiakban érhető tetten:
használata területileg csak a jelentősebb magyarországi városokra, illetve idegenforgalmi desztinációkra korlátozódik;
az API által visszaadott időjárási adatok csupán óránként egyszer frissülnek;
időjárás előrejelzés mindössze a mai, és a következő két napra érhető el, óránkénti részletességgel.
Mint fentebb tapasztalhattuk, paraméterezés nélkül az API Budapest időjárási előrejelzését adja vissza, ám az alábbiak szerint paraméterezve
csakugyan hozzáférhetünk az ország számos más pontjának várható időjárásához is:
Az időjárási API használatára mutat frontend lehetőséget a felhasználásával készült
napinap.hu oldal is.
3. Holdfázis
Időjárással, szabadidős programokkal, csillagászattal, asztrológiával, vagy bármi hasonló témával foglalkozó weboldalak esetén érdekes lehet tudni,
vagy akár meg is jeleníteni, hogy aktuálisan éppen milyen holdfázist produkál a Nap, a Föld, és a Hold állása. Ennek elméleti alapjairól már volt szó az
API végpontok létrehozása című oldal 4. pontjában. Ezúttal nézzük meg azt, hogyan is működhet
egy ilyen API a valóságban!
Vegyük észre, hogy ez az API nem csupán az adatait adja vissza az aktuális holdfázisnak, hanem még egy képet is mellékel róla - pontosabban annak a linkjét.
Hogyan történik a képrajzolás?
A holdfázis-képek nincsenek előre legyártva, tehát nem állnak rendelkezésre a tárhelyen, hanem mindig dinamikusan generálódnak. A hold aktuális fázisának
elkészítéséhez az alábbi ábra adhatja az alapötletet, mely konkrétan a 75%-os fogyó hold rajzolásával mutatja meg, hogyan célszerű részekből összerakni
a teljes képet,
míg a technikai megvalósításhoz a Képrajzolás című oldalra lehet érdemes ellátogatni.
A legtöbb API-hoz hasonlóan itt is van lehetőség paraméterezésre, mely a következő opciókat kínálja:
nap: dátum beállítás (YYYY-MM-DD formában),
ido: időpont beállítása napon belül (HH:MM:SS formában),
bg: ahol a bg=0 érték transzparens háttérrel adja vissza a hold aktuális képét.
Ez alapján akár az is érzékeltethető, hogy mennyit változik a holdfázis ma hajnali 1 óráról késő este 23 órára. Ehhez csak húzza rá az egeret a következő képre.
4. Valutaváltás
Egy-egy webshop, vagy egyéb, termékeket forgalmazó weboldal esetén gyakori megoldás, hogy az eladásra kínált termékek árát nemcsak forintban, hanem euróban is - vagy éppen
ellenkezőleg: az eurós árakat forintban is - feltüntetik... de akár más devizanem is érintett lehet az árazásban. Ennek megoldásához jól jöhet, ha az átváltást nem csupán
egy árfolyamtáblázat használatával van lehetőség kiszámolni, hanem direkt módon áll rendelkezésünkre egy olyan API, ami konkrét összeg átszámítását is el tudja végezni. Ezt
hivatott megvalósítani az alábbi API,
mely paraméterek nélkül 1 eurót vált forintra (másként fogalmazva megadja az euró aktuális árfolyamát), ám paraméterezve tetszőleges összegű devizát képes átváltani
bármilyen másik pénznembe az alábbiak mintájára, ahol pl. 1200 svájci frank árát szeretnénk megtudni forintban:
Feladat: Számíttassa ki az API-val, hogy 404 török líra hány fülöp-szigeteki pesót ér! 5. Domain foglaltság ellenőrzés
Vajon lehetséges-e olyan API-t készítenünk, amely megmondja, hogy szabad-e egy általunk keresett
domain név? Vagy ha épp pont az nem, akkor ugyanaz a név egy másik
TLD alatt?
Gyakori hiedelmeink szerint a domainek foglaltságáról információt szerezni csak a
domain.hu oldalon, illetve a különböző regisztrátor cégek
oldalain tudunk - mondván, ők tudhatják csak, mi került már bejegyzésre, és mi nem -, éppen ezért ilyen API
készítésére nincs lehetőségünk. A valóságban azonban ez nem így van. Létezik ugyanis két PHP függvény,
melyek megoldást jelenthetnek a problémára.
Míg a checkdnsrr() annak megfelelően ad
vissza igaz, vagy hamis értéket, hogy a paramétereként adott domainhez tartozik-e IP-cím, és DNS rekord, addig a
dns_get_record() azt tudja megmondani,
hogy milyen DNS rekordok tartoznak
a hosztnévhez.
Ezekből tehát nem túl bonyolult készítenünk olyan saját API-t, ami felsorolja nekünk, hogy az általunk
keresett domain név mely TLD-k alatt foglalt, illetve szabad.
Ha pedig már készítünk ilyen API-t, akkor elegáns lehet némiképp többlet szolgáltatást is adni általa. Például felsorolni a
domainhez bejegyzett rekordok típusait, valamint megadni a jellemző rekordoknak (pl. A, AAAA, SOA) a kiszolgáló szerverre
vonatkozó tartalmát. Extra információként pedig .hu domainek esetén pedig, kihasználva az
ujdomainek.hu adattárát, akár az adott domain történetére - vagyis
a korábbi bejezések, illetve visszamondások dátumaira - is kínálhatunk közvetlen rálátást. Pontosan ezt teszi az alábbi
végpont,
melynek a használatához egy q paraméterben csak a TLD nélküli domain nevet kell megadni. Például:
https://api.infojegyzet.hu/domain/?q=tanuljmost
A fentiek alapján elkészített API forráskódja
ide kattintva érhető el.
6. Az infojegyzet.hu látogatottsága
Amikor egy weboldal tulajdonosa a lapjainak egyes területeit reklámfelületként szeretné értékesíteni,
akkor a potenciális reklámozókat érdekelni fogja a megjelenítő weboldal látogatottsága, hiszen ez jelentősen befolyásolja
a reklámfelület értékét. Ennek okán a weboldal gazdájának valamilyen módon gondoskodnia kell arról, hogy a látogatottságra
folyamatosan rálátással bírjanak a hirdetői. Ezt a rálátást biztosíthatja egy külső - hitelesnek tekintett - szolgáltató is,
de akár a weboldal tulajdonosa is kínálhat ilyen jellegű statisztikát. Ez utóbbi megoldásra mutat példát az infojegyzet
alábbi API-ja, mely óránként bontásban adja meg a mai nap látogatóinak, illetve lapletöltéseinek számát:
Izgalmas kérdés lehet a látogatottsági statisztikák esetén, hogy a közölt adatok mennyiben jelentik kizárólag a humán látogatók számát,
vagy tartalmazzák-e esetleg a robot látogatók oldalletöltéseit is. Ez utóbbiak ugyanis a statisztikai adatok szempontjából nem korrektek,
sőt kifejezetten nem kívánatos torzítást jelentenek - ha bennük szerepelnek. Jelen API esetén
a robot látogatok kiszűrése az ezen a lapon ismertetett módszerekkel megtörténik,
a közölt adatok tehát valóban csak a tényleges, emberi látogatókat összesítik.