A REST áttekintése. 1. rész: Mi az a REST? Ebben a részben mélyen belemerülünk abba, hogyan zajlik a kommunikáció az ügyfél és a szerver között. Útközben új kifejezéseket fogunk feltárni és elmagyarázni.
Annak érdekében, hogy minden világos legyen, elemezzük a kliens-szerver kommunikációt példaként egy RESTful alkalmazás segítségével. Tegyük fel, hogy egy webalkalmazást fejlesztünk, amely információkat tárol az ügyfelekről és rendeléseikről. Más szóval, rendszerünk képes bizonyos entitásokon műveleteket végrehajtani: létrehozni, szerkeszteni és törölni, valamint információkat megjeleníteni róluk. Ezek az entitások a következők lesznek:

- ügyfelek (vevők)
- megrendelések (vásárlói rendelések)
- cikkek (termékek)
Kérések
Az ügyfelek kérései szinte mindig a HTTP protokoll használatával történnek. Általában a HTTP kérések több összetevőből állnak:- HTTP módszer
- fejléc
- URI
- kérelmező szerv
URI-k és erőforrások
Azokat az adatokat, amelyeket az ügyfelek kéréseken keresztül kapnak vagy módosítanak, erőforrásoknak nevezzük. Az ügyfél-szerver kommunikáció az erőforrások manipulálásáról szól. A REST-ben az erőforrások bármit jelentenek, aminek nevet adhatsz. Bizonyos értelemben olyanok, mint a Java osztályai. Java-ban bármihez létrehozhatunk osztályt. Tehát a REST-ben az erőforrás bármi lehet: felhasználó, dokumentum, jelentés, megrendelés. Ez lehet valamilyen entitás absztrakciója, vagy valami konkrét, például kép, videó, animáció vagy PDF-fájl. Példánkban 3 forrásunk van:- ügyfelek (vevők)
- megrendelések (vásárlói rendelések)
- cikkek (termékek)
- /customers — az összes elérhető ügyfél URI-je
- /customers/23 — egy adott ügyfél URI-je, azaz a 23-as azonosítójú ügyfél
- /customers/4 — egy adott ügyfél URI-je, azaz az ID=4-es ügyfél.
- /customers/4/orders — A 4. számú ügyfél által leadott összes megrendelés URI-ja
- /customers/1/orders/12 — Az 1. számú ügyfél által készített 12. számú rendelés URI-je.
- /customers/1/orders/12/items — A 12. számú rendelés összes termék listájának URI-je, amelyet az 1. számú ügyfél készített.
HTTP módszer
A HTTP metódus egy tetszőleges karaktersorozat (kivéve a vezérlőkaraktereket és a határolókat), amely az erőforráson végrehajtott fő műveletet jelzi. Számos általános HTTP-módszer létezik. Felsoroljuk azokat, amelyeket a RESTful szolgáltatásokban leggyakrabban használnak:- GET — Információt kaphat egy adott erőforrásról (az azonosítóján keresztül) vagy egy erőforrásgyűjteményről
- POST – Hozzon létre egy új erőforrást
- PUT – Erőforrás módosítása (azonosítójával)
- TÖRLÉS – Erőforrás törlése (az azonosítójával)
Fejlécek
A kérések és a válaszok HTTP-fejléceket tartalmaznak. További információkat közölnek a kérelemről (vagy válaszról). A fejlécek kulcs-érték párok. Megtekintheti a Wikipédián a leggyakoribb fejlécek listáját . Ami a REST-et illeti, az ügyfelek gyakran küldenek "Accept" fejlécet a kiszolgálónak küldött kérésekben. Ez a fejléc azért szükséges, hogy megmondja a szervernek, hogy az ügyfél milyen formátumban várja a választ. A MIME-típusok listája különféle formátumokat tartalmaz. A MIME (Multipurpose Internet Mail Extensions) egy specifikáció az információk kódolására és az üzenetek formázására, hogy azokat az interneten keresztül el lehessen küldeni. Minden MIME-típus két perjellel elválasztott részből áll – egy típusból és egy altípusból. Példák MIME-típusokra különböző típusú fájlokhoz:- szöveg — text/plain, text/css, text/html
- kép — kép/png, kép/jpeg, kép/gif
- audio – audio/wav, audio/mpeg
- videó — video/mp4, video/ogg
- alkalmazás – application/json, application/pdf, application/xml, application/octet-stream
Accept:application/json
Ez a fejléc közli a kiszolgálóval, hogy az ügyfél JSON-formátumban vár választ.
Kérelem szerve
Ezt az üzenetet küldi a kliens a szervernek. Az, hogy a kérésnek van-e törzse, a HTTP-kérés típusától függ. Például a GET és DELETE kérések általában nem tartalmaznak kéréstörzset. De a PUT és POST kérések igen – ez csak a kérés céljától függ. Végül is az adatok fogadásához és/vagy törléséhez egy azonosítóval (amely az URL-ben van átadva), nem kell további adatokat küldenie a szervernek. De egy új erőforrás létrehozásához (POST-kéréssel) el kell küldenie az erőforrást. Ugyanez igaz egy meglévő erőforrás módosítására is. A REST-ben a kérés törzsét leggyakrabban XML vagy JSON formátumban küldik el. A JSON formátum a leggyakoribb. Tegyük fel, hogy egy kérést szeretnénk küldeni a szervernek egy új erőforrás létrehozása érdekében. Ha nem felejtetted el, a vevői rendeléseket kezelő alkalmazás példáját vettük figyelembe. Tegyük fel, hogy új ügyfelet szeretnénk létrehozni. Esetünkben a következő ügyféladatokat tároljuk: Név, email cím, telefonszám. Ekkor a kérés törzse a következő JSON lehet:
{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+1 (222) 333-4444"
}
A kérések összeállítása
Tehát megvizsgáltuk, hogy mi lehet az ügyfél kérésében. Most néhány példát mutatunk be a kérésekre a leírásokkal együttKérés | Leírás |
---|---|
|
Információkat kaphat a 23. számú ügyfélről JSON vagy XML formátumban |
|
Hozzon létre új ügyfelet a következő mezőkkel: Név — Amigo Email — amigo@jr.com Telefonszám — +1 (222) 333-4444 |
|
Szerkessze az 1. számú vásárlót a következőképpen: Név — Ben Email — bigben@jr.com Telefonszám — +86 (868) 686-8686 |
|
Törölje a rendszerből a 12. számú ügyfél 6. számú megrendelését |
Válaszok
Mondjunk néhány szót a szerver válaszairól. A válasz általában a következő részekből áll:- válaszkód
- fejlécek
- választest
HTTP válaszkódok
Tekintsük részletesebben a HTTP válaszkódokat. A HTTP állapotkód a HTTP protokollon keresztül küldött kérésekre adott szerverválasz első sorának része. Ez egy egész szám, amely három tizedesjegyből áll. Az első számjegy a válasz állapotkód osztályát jelzi. A válaszkódot általában egy magyarázó kifejezés követi angolul, szóközzel elválasztva. Ez a kifejezés a válasz ember által olvasható oka. Példák:- 201 Létrehozva
- 401 Jogosulatlan
- 507 Elégtelen tárhely
- 1XX – Tájékoztató
- 2XX — Ezek a kódok azt jelzik, hogy az ügyfél kérelmét sikeresen fogadták és feldolgozták
- 3XX — Ezek a kódok tájékoztatják az ügyfelet arról, hogy a művelet sikeres befejezéséhez további kérést kell benyújtani, általában egy másik URI-ra.
- 4XX — Ügyfél hiba. Az ilyen kódok helytelenül összeállított kérésből származhatnak. Egy másik példa a jól ismert "404 Not Found" kód, amely akkor fordulhat elő, amikor egy kliens nem létező erőforrást kér.
- 5XX — Szerverhiba. Ezeket a kódokat a rendszer visszaküldi a kliensnek, ha a szerver felelős a művelet meghibásodásáért
GO TO FULL VERSION