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.
Muzete urite cast kriterii predat v ramci query parametru, nejen primo v URI. Predpokladam, ze nektera kriteria jsou nepovinna... > > 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. Napsal jste to sam: Pokud pouzivate HTTP, pro ziskani dat ze serveru slouzi vyhradne GET. Kdyz uz byste to chtel komplikovat, muzete pouzit dvojici requestu: POST/PUT pro vytvoreni "noveho" resource na serveru, sediciho na napr. adrese: http://.../users/queries/1 tj. POST na http://.../users/queries/ by vam vratilo v location hlavicce: http://.../users/queries/1 nebo, pokud byste chtel, aby kontrolu nad URI mel klient, pak klidne primo PUT na http://.../users/queries/1 a pak GETem byste z toho cetl data, ktera by mohla byt treba na http://.../users/queries/1/data ~Jakub > > 3) nejak inak :) rad sa necham poucit ... > > > RM > -- http://blogs.sun.com/japod
