<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aelenor</id>
	<title>VIK Wiki - Felhasználó közreműködései [hu]</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aelenor"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Aelenor"/>
	<updated>2026-05-15T06:53:28Z</updated>
	<subtitle>Felhasználó közreműködései</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=8._REST_(2012)&amp;diff=181182</id>
		<title>8. REST (2012)</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=8._REST_(2012)&amp;diff=181182"/>
		<updated>2014-05-25T23:19:58Z</updated>

		<summary type="html">&lt;p&gt;Aelenor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Csonk}}&lt;br /&gt;
&lt;br /&gt;
=HTTP=&lt;br /&gt;
* HTTP GET&lt;br /&gt;
[[Fájl:HTTP_GET.png]]&lt;br /&gt;
* HTTP POST&lt;br /&gt;
[[Fájl:HTTP_POST.png]]&lt;br /&gt;
&lt;br /&gt;
=REST=&lt;br /&gt;
REST = Representational State Transfer&lt;br /&gt;
&lt;br /&gt;
==RESTful HTTP==&lt;br /&gt;
* HTTP protokoll kibövítése: GET, POST, PUT, DELETE&lt;br /&gt;
* Bemenö paraméterek: URL része, URL query string, POST paraméter, HTTP body&lt;br /&gt;
* Visszatérési érték: HTTP body&lt;br /&gt;
* nagyon egyszerü: böngészőből is tesztelhetö&lt;br /&gt;
&lt;br /&gt;
==REST alapelvei==&lt;br /&gt;
* 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)&lt;br /&gt;
* Erőforrások lehetnek: doksik, adatok (szamitas eredmenye), szolgáltatások (SOAP, metaadatok, stb), fogalmak&lt;br /&gt;
* Dolgok összekapcsolása (jó URL cimet kell választani)&lt;br /&gt;
* CRUD müveletek használata (Create, Read, Update, Delete)&lt;br /&gt;
* Állapotmentes kommunikáció&lt;br /&gt;
&lt;br /&gt;
==Többféle adatreprezentáció==&lt;br /&gt;
*HTML (emberek szamara) vagy XML, JSON, stb. gépek számára&lt;br /&gt;
*változhat a struktúra&lt;br /&gt;
&lt;br /&gt;
==Állapotmentes kommunikáció==&lt;br /&gt;
A REST önmagában állapotmentes&lt;br /&gt;
*De az alkalmazásnak lehet állapota (kliens oldalon, erőforrásban tárolva)&lt;br /&gt;
*Skálázhatósági előnyök emiatt (nincs session, felcserélhető szerverek)&lt;br /&gt;
&lt;br /&gt;
==Műveletek erőforrásokon==&lt;br /&gt;
[[Fájl:muv_eroforr.png]]&lt;br /&gt;
* &#039;&#039;&#039;safe:&#039;&#039;&#039; a kliens olyan műveletet hajt végre, ami csak lekérdez, és nem tehető felelőssé az okozott mellékhatásokért&lt;br /&gt;
* &#039;&#039;&#039;idempotent&#039;&#039;&#039;: a művelet ismételt végrehajtása ugyanazt az eredményt produkálja&lt;br /&gt;
* &#039;&#039;&#039;cacheable&#039;&#039;&#039;: 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.&lt;br /&gt;
&lt;br /&gt;
==REST kritikák==&lt;br /&gt;
* CRUD műveleteken kívül másra nem alkalmas&lt;br /&gt;
* Nincs interfészleíró (ami leírja a műveleteket és a paraméterek típusát (szemantikát nem, azaz kliens stub -&amp;gt; szerver skeleton generálás))&lt;br /&gt;
* Túl sok belső részletet elárul (igen, mert szemlélet más: műveletközpontú helyett adatközpontú)&lt;br /&gt;
* Tervezési guideline-ok hiánya&lt;br /&gt;
* Middleware funkciók hiánya (nincs tranzakció kezelés, meg nem biztos hogy jönn a HTTP 200 OK válasz)&lt;br /&gt;
* 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)&lt;br /&gt;
&lt;br /&gt;
==JAX-RS==&lt;br /&gt;
* JAX-RS: Java API for RESTful Web Services&lt;br /&gt;
* Java osztályok leképzése REST erőforrásokra (annotációk)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Számológép példa revisited&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
@Path(&amp;quot;calculator&amp;quot;)&lt;br /&gt;
public class Calculator{&lt;br /&gt;
     @GET&lt;br /&gt;
     @Path(&amp;quot;add&amp;quot;)&lt;br /&gt;
     @Produces(&amp;quot;text/plain&amp;quot;)&lt;br /&gt;
     public double add(@QueryParam(&amp;quot;left&amp;quot;) double left, @QueryParam(&amp;quot;right&amp;quot;) double right) { return left+right; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lehetséges visszatérési értékek&#039;&#039;&#039;&lt;br /&gt;
* void, null (204 no content status code)&lt;br /&gt;
* Response&lt;br /&gt;
* GenericEntity&lt;br /&gt;
* egyébb&lt;br /&gt;
&lt;br /&gt;
* Stringet támogat, double-t nem&lt;br /&gt;
** double-re a megoldás a &amp;quot;MessageBodyWriter&amp;quot; implementálása&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HTTP method annotációk:&#039;&#039;&#039; @GET, @POST, @PUT, @DELETE, @HEAD&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;HTTP content-type annotációk:&#039;&#039;&#039; @Consumes, @Produces&lt;br /&gt;
&lt;br /&gt;
= Elosztott technológiák összefoglaló =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&amp;amp;nbsp;&lt;br /&gt;
!REST&lt;br /&gt;
!RMI&lt;br /&gt;
!WS&lt;br /&gt;
!CORBA&lt;br /&gt;
|-&lt;br /&gt;
!Különbözö programnyelvek között müködik&lt;br /&gt;
|igen&lt;br /&gt;
|nem&lt;br /&gt;
|igen&lt;br /&gt;
|igen&lt;br /&gt;
|-&lt;br /&gt;
!Kommunikációs protokoll&lt;br /&gt;
|HTTP&lt;br /&gt;
|RMI&lt;br /&gt;
|SOAP&lt;br /&gt;
|IIOP&lt;br /&gt;
|-&lt;br /&gt;
!Interfészleíró&lt;br /&gt;
|nincs/WADL&lt;br /&gt;
|Java Interface&lt;br /&gt;
|WSDL&lt;br /&gt;
|IDL&lt;br /&gt;
|-&lt;br /&gt;
!Katalógus&lt;br /&gt;
| -&lt;br /&gt;
|JNDI&lt;br /&gt;
|UDDI&lt;br /&gt;
|Naming service&lt;br /&gt;
|-&lt;br /&gt;
!Elosztott&lt;br /&gt;
|igen&lt;br /&gt;
|igen&lt;br /&gt;
|igen&lt;br /&gt;
|igen&lt;br /&gt;
|-&lt;br /&gt;
!Szakványos&lt;br /&gt;
|igen&lt;br /&gt;
|nem&lt;br /&gt;
|igen&lt;br /&gt;
|igen&lt;br /&gt;
|-&lt;br /&gt;
!Széles körü támogatás&lt;br /&gt;
|igen&lt;br /&gt;
|nem&lt;br /&gt;
|igen&lt;br /&gt;
|igen&lt;br /&gt;
|-&lt;br /&gt;
!Egyszerü&lt;br /&gt;
|igen&lt;br /&gt;
|igen&lt;br /&gt;
|nem&lt;br /&gt;
|nem&lt;br /&gt;
|-&lt;br /&gt;
!Egyszerü API&lt;br /&gt;
|igen&lt;br /&gt;
|igen&lt;br /&gt;
|igen&lt;br /&gt;
|nem&lt;br /&gt;
|-&lt;br /&gt;
!Gyors&lt;br /&gt;
|igen&lt;br /&gt;
|igen&lt;br /&gt;
|nem&lt;br /&gt;
|igen&lt;br /&gt;
|-&lt;br /&gt;
!Biztonság, tranzakciók&lt;br /&gt;
|nem&lt;br /&gt;
|nem&lt;br /&gt;
|igen&lt;br /&gt;
|nem&lt;br /&gt;
&lt;br /&gt;
[[Kategória:Infoszak]]&lt;/div&gt;</summary>
		<author><name>Aelenor</name></author>
	</entry>
</feed>