„8. REST (2012)” változatai közötti eltérés

Tank (vitalap | szerkesztései)
Csia Klaudia Kitti (vitalap | szerkesztései)
aNincs szerkesztési összefoglaló
 
(25 közbenső módosítás, amit 4 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{Csonk}}


=HTTP=
=HTTP=
* HTTP GET
* HTTP GET
[[Fájl:HTTP_GET.png]]
[[File:HTTP_GET.png]]
* HTTP POST
* HTTP POST
[[Fájl:HTTP_POST.png]]
[[File:HTTP_POST.png]]


=REST=
=REST=
17. sor: 16. sor:


==REST alapelvei==
==REST alapelvei==
* Minden eröforráshoz azonosító rendelése
* Minden eröforráshoz azonosító rendelése (URI, URN, URL a jó, mert egyértelmű, könnyű feloldani, független a mögöttes technológiától)
* Dolgok összekapcsolása
* Erőforrások lehetnek: doksik, adatok (szamitas eredmenye), szolgáltatások (SOAP, metaadatok, stb), fogalmak
* Dolgok összekapcsolása (jó URL cimet kell választani)
* CRUD müveletek használata (Create, Read, Update, Delete)
* CRUD müveletek használata (Create, Read, Update, Delete)
* Állapotmentes kommunikáció
* Állapotmentes kommunikáció


= Elosztott technológiák összefoglaló =
==Többféle adatreprezentáció==
*HTML (emberek szamara) vagy XML, JSON, stb. gépek számára
*változhat a struktúra
 
==Állapotmentes kommunikáció==
A REST önmagában állapotmentes
*De az alkalmazásnak lehet állapota (kliens oldalon, erőforrásban tárolva)
*Skálázhatósági előnyök emiatt (nincs session, felcserélhető szerverek)
 
==Műveletek erőforrásokon==
[[File:muv_eroforr.png]]
* '''safe:''' a kliens olyan műveletet hajt végre, ami csak lekérdez, és nem tehető felelőssé az okozott mellékhatásokért
* '''idempotent''': a művelet ismételt végrehajtása ugyanazt az eredményt produkálja
* '''cacheable''': akár a proxy vagy a gateway is cachelheti a szerver kapcsolódása nélkül. Képek esetén ajánlatos a long live beállitása.
 
==REST kritikák==
* CRUD műveleteken kívül másra nem alkalmas
* Nincs interfészleíró (ami leírja a műveleteket és a paraméterek típusát (szemantikát nem, azaz kliens stub -> szerver skeleton generálás))
* Túl sok belső részletet elárul (igen, mert szemlélet más: műveletközpontú helyett adatközpontú)
* Tervezési guideline-ok hiánya
* Middleware funkciók hiánya (nincs tranzakció kezelés, meg nem biztos hogy jönn a HTTP 200 OK válasz)
* Nincs publish-subscribe (pl egy RSS proginak) ill. aszinkron kommunikáció (ha a szerver hosszú müveletet végez, megoldásként HTTP 202 Accepted)
 
==JAX-RS==
* JAX-RS: Java API for RESTful Web Services
* Java osztályok leképzése REST erőforrásokra (annotációk)
 
'''Számológép példa revisited'''<br />
<code>
@Path("calculator")
public class Calculator{
    @GET
    @Path("add")
    @Produces("text/plain")
    public double add(@QueryParam("left") double left, @QueryParam("right") double right) { return left+right; }
}
</code>
 
'''Lehetséges visszatérési értékek'''
* void, null (204 no content status code)
* Response
* GenericEntity
* egyébb
 
* Stringet támogat, double-t nem
** double-re a megoldás a "MessageBodyWriter" implementálása


'''HTTP method annotációk:''' @GET, @POST, @PUT, @DELETE, @HEAD<br />
'''HTTP content-type annotációk:''' @Consumes, @Produces


= Elosztott technológiák összefoglaló =
{|class="wikitable"
{|class="wikitable"
!&nbsp;
!&nbsp;
51. sor: 99. sor:
|-
|-
!Katalógus
!Katalógus
| -
|JNDI
|JNDI
|UDDI
|UDDI
|Naming Service
|Naming service
| -
|-
|-
!Elosztott
!Elosztott
97. sor: 145. sor:
|igen
|igen
|nem
|nem
[[Kategória:Infoszak]]
A lap eredeti címe: „https://vik.wiki/8._REST_(2012)