8.1 Távoli API megközelítés
Minden programozó ugyanazt a hibát követi el, amikor kliens-szerver architektúrát épít. Elkezdik a kiszolgálóhoz intézett kéréseket metódushívásként kezelni .
Ha el szeretné indítani a jelentéskészítési folyamatot a szerveren, miért ne küldhetne neki egy kérést, például:
http://server.com/startDocumentGeneration?params
És hogyan lehet letölteni a jelentést, miután elkészült? Ehhez egy másik módszert írunk:
http://server.com/getDocument
A szerver HttpSession
a dokumentumunkon tárol információkat, és amint a dokumentum létrejön, a szerver visszaadja azt.
Remek megközelítés. Vagy nem?
A megközelítés valóban szörnyű. A helyzet az, hogy a szervernek emlékeznie kell a dokumentumszámra. Más szóval, az új metódushívások megfelelő feldolgozása érdekében a szervernek emlékeznie kell a korábbi metódusok meghívásának eredményére.
A weben ez nagy probléma. Eltűnhet az internet, bezárhat a böngésző. Az oldal újratölthető, vagy véletlenül rákattinthat egy hivatkozásra stb. És a szerver továbbra is megabájtnyi adatot tárol a korábbi felhasználói kérésekből ...
A szerverrel való kényelmes munka érdekében nem számíthat arra, hogy mindig kéznél lesznek a szerverhez intézett korábbi kérések adatai.
Hogyan hívjuk meg a szerver metódusait? A helyes válasz szörnyű lenne: dehogy!
8.2 REST megközelítés
A programozók visszatértek az alapokhoz, és emlékeztek arra, hogy a kérés eredetileg a kiszolgálón lévő fájl elérési útját tartalmazza:
http://server.com/path?params
És úgy döntöttünk, hogy ezt a megközelítést maximálisan alkalmazzuk.
Mostantól a szervert az adatok tárházának tekintik, amely egy fa formájában kívülről is látható .
Ha szeretné látni az összes felhasználó listáját, hívja a lekérdezést:
http://server.com/users
Ha adatokat szeretne kapni a 113-as felhasználóról, futtassa a lekérdezést:
http://server.com/users/113
És így tovább, minden ugyanabban a szellemben.
A szervert ismét az adatok tárházának tekintjük, amely egy fa formájában kívülről is látható.
Adatok fogadása - GET kérések , módosított - POST kérések és törölt - DELETE kérések .
8.3 Nincs állapot
A kliens és a szerver közötti interakció REST protokollja a következő feltételt követeli meg: a klienstől érkező kérések közötti időszakban a kiszolgáló nem tárol információt a kliens állapotáról.
Az ügyféltől érkező összes kérést úgy kell kialakítani, hogy a szerver minden alkalommal megkapja a kérés teljesítéséhez szükséges összes információt . A munkamenet állapota a kliens oldalon kerül mentésre.
Az ügyfélkérelmek feldolgozása során az ügyfél átmeneti állapotúnak minősül. Minden egyes alkalmazásállapotot hivatkozások képviselnek, amelyek a kliens legközelebbi lehívásakor hívhatók meg.
8.4 Interfész egységessége
Az objektumok szerverről való lekéréséhez használt összes útvonal szabványos. Ez nagyon kényelmes, különösen akkor, ha más REST-kiszolgálókról kap adatokat.
Minden objektum interfésznek meg kell felelnie három feltételnek:
Erőforrás azonosítás
Minden erőforrás URI-t használó kérésekben azonosításra kerül. A kiszolgálón belüli erőforrások elkülönülnek az ügyfeleknek visszaküldött nézetektől. Például egy szerver küldhet adatokat egy adatbázisból HTML, XML vagy JSON formátumban, amelyek egyike sem tárolótípus a kiszolgálón belül.
Erőforrások kezelése nézeten keresztül
Ha az ügyfél tárolja az erőforrás reprezentációját, beleértve a metaadatokat is, akkor elegendő információval rendelkezik ahhoz, hogy módosítsa vagy törölje az erőforrást a kiszolgálón.
„Önleíró” üzenetek
Minden üzenet elegendő információt tartalmaz a feldolgozás megértéséhez. Például, ha információra van szüksége a felhasználóról, akkor a szerver egy JSON objektumot ad vissza, ahol lesznek név és cím mezők.
Nem fordulhat elő olyan helyzet, amikor a kliensnek tudnia kell, hogy a válasz első számjegye az életkor, a második pedig a születési dátum.
8.5 Gyorsítótár
A REST megközelítés feltételezi, hogy az adatkérések a HTTP protokollon keresztül történnek. Ezért az objektumokat egy GET kérés meghívásával kapja meg. Ez azt jelenti, hogy a GET-kérésen keresztül kapott összes erőforráshoz hasonlóan rájuk is vonatkoznak a HTTP-erőforrások gyorsítótárazási szabályai.
Ez azt jelenti, hogy a REST API-n keresztül kapott adatok ugyanúgy gyorsítótárazásra kerülnek, mint bármely statikus erőforrás a webszervereken. szépség :)