On Tue, Aug 19, 2008 at 10:15:37AM +0200, Richard Mihalovič wrote:
> Diky za vycerpavajucu odpoved, za to uz by si si zasluzil aj nejake
> pivo :)

Hmm. Jakozto abstinent... :-D

> Na dnes snad uz len jedna otazka :) Ake api/frameworky/tooly pouzivate
> pri vyvoji REST aplikacii? Ja momentalne pouzivam tieto veci:
> 
> server/klient cast(JAVA): Restlet (http://www.restlet.org/)
> binding XML (JAVA): JAXB
> klient (FIREFOX): Poster
> 

Ty, kteri mne znaji a znaji me nazory, jiste nepreqapi, kdyz napisu,ze JSDK ;-)

Ale uz mam v ToDo listu se do konce roku podivat, jesti neni neco, co by mi
usetrilo praci a umelo se chovat tak, jak bych ja potreboval.

Oto 'tapik' Buchta

> RM
> 
> On Tue, 2008-08-19 at 09:39 +0200, Oto Buchta wrote:
> > On Mon, Aug 18, 2008 at 11:51:15PM +0200, Richard Mihalovič wrote:
> > > Dik za odpoved, rad si precitam aj tu doplnenu cast, lebo som nejak
> > > vsetko nepodchytil ... :) v podstate ak som spravne pochopil je len na
> > > mne ci budem parametre predavat pomocou GET alebo POST.
> >  
> > Presne tak. REST neni o tom, v jake reprezentaci prenest data z jedne strany
> > na druhou, ale jakym zpusobem aplikaci navrhnout.
> > 
> > > Popripade ak by si mohol uviest nejake zdroje: knihy, best patterns
> > > ktore sa oplati precitat.
> >  
> > Mam-li byt uprimny, tak krome bible RESTU (Fieldingova Dizertacka, kde REST
> > definuje) jsem ja osobne zadnou knihu necetl. V dobach, kdy jsme s RESTem
> > v Systinetu zacinali, to jeste nebyl buzzword, takze se o nem knihy 
> > netiskly.
> > 
> > Staci se podivat na amazon - 
> > http://www.amazon.com/s/ref=nb_ss_b?url=node%3D1000%2C5%2C3510&field-keywords=REST&x=9&y=17
> >  a clovek zjisti, ze jich ani
> > moc neni. Kazdopadne podle referenci znamych neni RESTful WebServices 
> > (na amazonu v searchi na REST je hned prvni, takze asi tak) vubec spatna.
> > 
> > V cestine jsem nic o RESTu nevidel.
> > 
> > > Zatial co som cital rozne zdroje (hlavne web) tak mam pocit ze REST je
> > > natolko volny az je z toho miestami anarchia a chaos a kazdy si to
> > > vysvetluje po svojom :)
> > 
> > Ano. Proto jsem psal o CHYRU okolo RESTu. REST je dost casto zjednodusovan
> > na HTTP a z toho prameni jeho nepochopeni.
> >  
> > Na druhou stranu nikde nerikam, ze mam patent na rozum (natoz na REST),
> > takze i moje tvrzeni nemusi vzdy odpovidat. Proto kazde opraveni vitam.
> > 
> > > A ked uz som natrafil na cloveka ktory sa REST-u venuje, by som sa
> > > spytal este na par veci ktore mi nie su uplne jasne:
> > > 
> > > 1) referencia namiesto obsahu
> > > 
> > > preco sa vo vacsine xml/json suborov uvadza referencia na zdroj na
> > > miesto obsahu ?
> > > 
> > > napr.
> > > 
> > > <order ref="http://....";>
> > >   <item ref="http://server/item/1"/>
> > >   <item ref="http://server/item/2"/>
> > >   <item ref="http://server/item/3"/>
> > > </order>
> > > a nie uplny obsah napr:
> > > 
> > > <order number="abc" id="123">
> > >   <item>
> > >           <id>1</id>
> > >           <catalogNumber>a123</catalogNumber>
> > >           <price>12,55</price>
> > >           ...
> > >   </item>
> > >   ...
> > >   <item>
> > >   </item>
> > > </order>
> > > Mi pripada logicke nacitat viac udajov naraz, ako sa potom dotazovat na
> > > kazdy zaznam po jednom requeste (teda aspon mam pocit ze by to mohlo byt
> > > rychlejsie :).
> > 
> > Ono se samozrejme pouziva obeho pristupu. Pristup referenci je naprosto 
> > jasny:
> > zdroj neni nic jineho nez BAG (collection) jinych zdroju. Vyhoda je v tom,
> > ze onen zdroj, onen batoh, zkratka nezajima, jak ony zdroje vypadaji.
> > Vem si, ze by tvuj batoh mel vedet dopredu vsechno o vsech vecech, ktere
> > do nej nekdy v budoucu prijdou a mel s nimi umet pracovat. One je proste
> > umi jenom uschovat v sobe.
> > 
> > Druhy postup byva principialne jakasi proxy, ktera umi vzit onen batoh a 
> > jeho
> > obsah a pokud rozumi vsemu, co uvnitr je (coz u objednavky a jejich polozek
> > lze ocekavat), umi je vratit kompletne vyrenderovane. Dost casto byva tato
> > proxy implementovana jako "jina reprezentace" onoho batohu. Predstav si to
> > tak, ze onen batoh ma URI http://mujstroj/mojeaplikace/mujbatoh a pri 
> > ziskavani
> > jeho obsahu pouzijes dva parametry - ?withLinks nebo ?withContent
> > 
> > Je to uz jasnejsi?
> > 
> > > 
> > > 2) navratove kody operacii
> > > Tu su znova dve moznosti, bud budem vracat vysledok kazdej operacie ako
> > > HTTP status code/header (404-Not found, 200-Ok, 201-Created,
> > > 202-Accepted,...) alebo ako XML subor typu:
> > > 
> > > <response code="error">
> > >   <error>resource not found</error>
> > > </response>
> > > 
> > > alebo dokonca ako kombinaciu HTTP status code a XML
> >  
> > Jak uz jsem psal ciste zalezi na tobe. Osobne bych doporucoval spojeni 
> > obeho,
> > kdy 404 nemusi nic obsahovat, kdezto 201-Created by mohl vracet byt cely 
> > obsah
> > vyvtoreneho zdroje nebo minimalne jeho URL, protoze typicky se operace 
> > CREATE
> > implementuje na kolekci zdroju daneho typu.
> >  
> > > 3) protokol
> > > 
> > > > HTTP je pouze jendim z RESTovych protokolu, ktery se typicky
> > > > pouziva jako transportni protokol pro jiny RESTovy protokol.
> > > 
> > > existuje aj nejaky iny protokol ktory sa realne pouziva ?
> >  
> > Samozrejme. Napriklad WebDAV ci FTP, ktere maji dokonce i svuj vlastni
> > transportni protokol ;-)  Pokud se jedna o REST over HTTP, pak naprilad 
> > ATOM.
> >  
> > > No na dalsie veci sa radsej spytam nabuduce ;)
> > 
> > Uz se tesim ;-) Kazdy dotaz se pak pokusim nejak rozebrat v oRESTovani,
> > ale az na to bude cas ;-) A ze bych to pak vydal knizne ? :-D LOL
> > 
> > Oto 'tapik' Buchta
> > 
> > > 
> > > RM
> > > 
> > > On Mon, 2008-08-18 at 11:07 +0200, Oto Buchta wrote:
> > > > Tvuj problem je v nekolika omylech, ktera prameni z chyru kolem RESTu:
> > > > a) REST != CRUD . REST je o definici maleho mnozstvi operaci nad vsemi
> > > >   zdroji daneho systemu. Jako priklad uvedu HTTP operace HEAD a OPTIONS.
> > > > b) REST != HTTP . HTTP je pouze jendim z RESTovych protokolu, ktery se 
> > > > typicky
> > > >   pouziva jako transportni protokol pro jiny RESTovy protokol.
> > > > c) URI nereprezentuje presnou datovou podobu zdroje pro READ operace.
> > > >   URI reprezentuje zdroj jako takovy. Kazda operace muze byt 
> > > > parametrizovana.
> > > >   Podstatne je, aby opakovane READ operace na stejny zdroj vracely byt 
> > > > ruzne,
> > > >   ale semanticky shodne reprezentace zdroje. Jako priklad opet uvedu onu
> > > >   HTTP operaci HEAD, ktera vraci pouze "metadata" zdroje. Dalsim 
> > > > prikladem
> > > >   z HTTP je moznost rict si o preferovany jazyk vysledku.
> > > > 
> > > > Co z toho plyne?
> > > > 
> > > > Zaved si pro kazdy typ zdroje jejich kolekci, na teto kolekci zaved 
> > > > operaci
> > > > QUERY (nebo FILTER, jak chces) a tato operace bude mit logicky dva 
> > > > parametry:
> > > > 1) URL kolekce
> > > > 2) vlastni query
> > > > 
> > > > Pak uz zalezi ciste na tobe, jaky udelas binding na HTTP. Muzes pouzit 
> > > > query
> > > > string GETove operace (ta je mimochodem taky dvouparametrova, URL
> > > > a QUERY_STRING, pricemz druhy parametr je nepovinny) nebo POST a query 
> > > > posilat
> > > > v datech. 
> > > > 
> > > > Na http://tapikuv.blogspot.com/2008/08/orestoven-dotazy.html to zkusim 
> > > > behem
> > > > tydne trochu vic rozvest.
> > > > 
> > > > On Sat, Aug 16, 2008 at 02:25:03PM +0200, Richard Mihalovič wrote:
> > > > > Zdravim konfereneciu
> > > > > 
> > > > > Zacinam s REST a zakladne principy som snad pochopil (CRUD ->
> > > > > POST,GET,PUT,DELETE). Ale neviem presne ako realizovat filtrovanie
> > > > > zaznamov.
> > > > > 
> > > > > Napriklad:
> > > > >  mam zoznam uzivatelov ktory maju polozky: age, firstName, lastName,
> > > > > atd. Ak chcem nacitat vsetky zaznamy tak dam GET request na adr.
> > > > > 'http://adresa.server/users' vrati mi zoznam vsetkych uzivatelov. Ale 
> > > > > ak
> > > > > by som chcel filtrovat zaznamy podla kriterii napr:
> > > > >     firstName='James' AND lastName!='Bond' OR age>40
> > > > > Akym sposobom sa dotazovat k tymto zaznamom ? Napadaju ma nasedovne
> > > > > sposoby:
> > > > > 
> > > > > 1) cely dotaz dat do URL:
> > > > > 
> > > > > http://adresa/users/search/v1,s1,c1,o1: ... 
> > > > > :vn,sn,cn,o1/orderby/xyz/...
> > > > > 
> > > > > n=1..m
> > > > > vn - variable, napr: 'firstName' 
> > > > > sn - string, napr: 'James'
> > > > > cn - condition, napr. 'eg' = equals, 'gt' = greater than, ...
> > > > > on - operator, napr. 'a' = AND, 'o' = OR
> > > > > 
> > > > > V tomto pripade by sa cely dotaz zapisal do URL a po zavolani GET
> > > > > request by sa vratil vyfiltrovany obsah. Tento sposob mi pripada asi
> > > > > najviac RESTful, ale ta url by bola asi dost dlha v niektorych
> > > > > pripadoch.
> > > > > 
> > > > > 2) dotaz zakodovat do XML
> > > > > 
> > > > > <query orderby="...">
> > > > >       <filter variable="..." string="..." condition="..." 
> > > > > operator="..." />
> > > > >       <filter variable="..." string="..." condition="..." 
> > > > > operator="..." />   
> > > > > </query>
> > > > > 
> > > > > V tomto pripade by sa muselo XML asi poslat cez request POST alebo 
> > > > > PUT a
> > > > > nasledne spracovat, ale metody POST, PUT sluzia na ine ucely a asi to
> > > > > nie je 'validne' REST riesenie.
> > > > > 
> > > > > 3) nejak inak :) rad sa necham poucit ...
> > > > > 
> > > > > 
> > > > > RM

Odpovedet emailem