Dik za odkazy.

Som sa pozeral na proposal JSR-311, som bol zvedavy ako je riesena
klientska cast pristupu k RESTu, tak som si pozrel tento dokument a som
nasiel tuto cast:

JAX-RS: JavaTM API for RESTful
Web Services
Proposed Final Draft
August 1, 2008

Non-Goals:
Client APIs The specification will not define client-side APIs. Other
specifications are expected to provide such functionality.

Da sa pomocou Jersey pristupovat ako klient k REST zdrojom, alebo si to
treba naprogramovat vlastnymi silami?

Napr. Restlet ma rozhranie pre pristup k REST zdrojom ako klient, aj ked
binding a osetrovanie chybovych stavov treba robit vo vlastnej rezii.

napr.
client = new org.restlet.Client(org.restlet.data.Protocol.HTTP);
response = client.post(url, content);

RM

On Tue, 2008-08-19 at 17:30 +0200, Jakub Podlesak 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.
> > 
> > Popripade ak by si mohol uviest nejake zdroje: knihy, best patterns
> > ktore sa oplati precitat.
> 
> Vyplati se IMHO podivat se i po inetu, kde se daji
> najit napr. clanky [1], [2].
> 
> Pro "vytrvalejsi" zajemce o REST je urcite uzitecna konference na yahoo 
> groups [3]
> 
> No a protoze jsme na java listu, urcite nesmim vynechat link
> na prislusnou specifikaci JSR-311 [4], a referencni implementaci
> -- projekt Jersey [5].
> 
> ~Jakub
> 
> [1]http://www.infoq.com/articles/rest-introduction
> [2]http://exyus.com/articles/rest-the-short-version/
> [3]http://tech.groups.yahoo.com/group/rest-discuss/?v=1&t=search&ch=web&pub=groups&sec=group&slk=2
> [4]http://jsr311.dev.java.net/
> [5]http://jersey.dev.java.net/
> 
> 
> > 
> > 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 :)
> > 
> > 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 :).
> > 
> > 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
> > 
> > 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 ?
> > 
> > 
> > 
> > No na dalsie veci sa radsej spytam nabuduce ;)
> > 
> > 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