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 HttpSessiona 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 :)