Miért kell?
Az új képzési törvényben nagy szerepet kapnak a RestAPI-k. A vizsgaremek értékelésénél is nevesítve van, így nem csak a használatát kell ismerni, de a sikeres vizsgaremeknek tartalmaznia is kell.
Az interneten egyre több API érhető el. Itt egy szép GitHub-os gyűjtemény Mielőtt hozzákezdenél a sajátod elkészítéséhez érdemes ezek közül kipróbálni néhányat.
Mi az a REST API?
A REST a 'REpresentational State Transfer' rövidítése. Roy Fielding informatikus publikált először erről a megoldásról még 2000-ben. Célja a hálózati terhelés csökkentése és az általános célú felhasználhatóság volt. Napjainkban megkerülhetetlenné vált a használata. Bővebben itt és kliensek és végpontok.
Vezérelvek - megszorítások
- Kliens-szerver architektúra
- A kliensek el vannak különítve a szerverektől egy egységes interfész által. Az érdekeltségek ilyen nemű szétválasztása azt jelenti, például, hogy a kliensek nem foglalkoznak adattárolással, ami a szerver belső ügye marad, és így a kliens kód hordozhatósága megnő. A szerverek nem foglalkoznak a felhasználói felülettel vagy a kliens állapotával, így a szerverek egyszerűbbek és még skálázhatóbbak lehetnek. A szerverek és kliensek áthelyezhetőek és fejleszthetőek külön-külön is, egészen addig amíg az interfész nem változik meg.
- Állapotmentesség
- Az állapotmentesség egy olyan kommunikációs protokoll, amiben a kérést fogadó szerver nem tárol el adatot a kliensről. A kliens-szerver kommunikáció állapotmentes az által, hogy minden egyes kérés bármelyik klienstől tartalmazza az összes szükséges információt a kérés kiszolgálásához, és minden állapotot a kliens tárol. A szerver lehet állapottartó; ez a korlátozás csupán azt követeli meg, hogy a szerver oldali erőforrás-állapotok URL által címezhetőek legyenek. Ez nem csak a szerver felügyeletét teszi lehetővé, de megbízhatóbbá teszi őket a hálózati meghibásodásokkal szemben, valamint tovább fokozza a skálázhatóságot.
- Gyorsítótárazhatóság
- Mint ahogy a világhálón, a kliensek és a közvetítők képesek gyorsítótárazni a válaszokat. A válaszoknak ezért közvetlenül vagy közvetve tartalmazniuk kell, hogy gyorsítótárazhatóak-e vagy sem. Így elkerülhető, hogy a kliens téves vagy elavult adatokat használjon fel újra. Egy jól implementált gyorsítótár lehetővé teszi, hogy teljesen megkerüljünk egyes kliens-szerver interakciókat, ezzel megnövelve a rendszer skálázhatóságát és a teljesítményét.
- Réteges felépítés
- Egy kliens általában nem tudja megmondani, hogy közvetlen csatlakozott-e a végpont szerverhez, vagy közvetítő segítségével. A közvetítő szerverek megnövelhetik a rendszer skálázhatóságát terheléseloszlással és megosztott gyorsítótárak használatával.
- Igényelt kód (opcionális)
- A szerverek képesek időlegesen kiterjeszteni vagy testre szabni egy kliens funkcionalitását, programrészek átadásával, amelyeket a kliens futtatni képes. Ide tartoznak az előre fordított komponensek (pl. Java appletek) és a kliensoldali szkriptek (pl. JavaScript).
- Egységes interfész
- Az egységes kliens-szerver interfész alapvető a RESTful rendszerek tervezéséhez. Egyszerűsíti és elválasztja az architektúrát. Ezáltal lehetővé teszi, hogy egymástól függetlenül fejlődjenek az egyes részek.
Működés
HTTP kérési módok
- GET - A GET metódus a megadott erőforrás ábrázolását kéri. A GET kérések csak adatokat kérhetnek le.
- HEAD - A HEAD metódus a kéréssel azonos választ kér, de a választörzs nélkül.
- POST - A POST metódus egy entitást küld el a megadott erőforráshoz, ami gyakran állapotváltozást vagy egyéb hatásokat okoz a kiszolgálón.
- PUT - A PUT módszer lecseréli a célerőforrás összes jelenlegi reprezentációját a kérés hasznos adatára.
- DELETE - A DELETE metódus törli a megadott erőforrást.
- CONNECT - A CONNECT módszer alagutat hoz létre a célerőforrás által azonosított kiszolgálóhoz.
- OPTIONS - A OPTIONS módszer leírja a cél erőforrás kommunikációs lehetőségeit.
- TRACE - A TRACE metódus üzenet-visszacsatolási tesztet hajt végre a cél erőforrás elérési útja mentén.
- PATCH - A PATCH módszer részleges módosításokat alkalmaz egy erőforráson.
HTTP válaszok
- 1xx - Tájékoztató
- 2xx - Sikeres teljesítés
- 3xx - Átirányítás
- 4xx - Ügyfél hiba
- 5xx - Szerver hiba
API key
Egy alkalmazás vagy felhasználó azonosítására és hitelesítésére használt kód. Az API-kulcsok platformokon keresztül érhetők el. Egyedi azonosítóként is működnek, és titkos tokent biztosítanak hitelesítési célokra.
Mivel maga az API-kulcs egy identitás, amely alapján azonosítható az alkalmazás vagy a felhasználó,
egyedinek, véletlenszerűnek és nem kitalálhatónak kell
lennie. A generált API-kulcsoknak alfanumerikus és speciális karaktereket is kell használniuk. Ilyen API-kulcs
például a 'zaCELgL.0imfnc8mVLWwsAawjYr4Rx-Af50DDqtlx'
.