Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
REST: architektura pro webové API

peter
peter (neregistrovaný) 158.195.167.---
3. 8. 2009 2:00 Nový

REST nie je protokol!

celé vlákno

REST je styl softverovej architektury!

Dnes vela ludi o RESTe hovori, ale len malo z nich mu rozumie. Tych, ktori nerozumeju, co je za pojmom REST spoznate podla toho, ze o nom hovoria ako o protokole. Myslim ze vystizne o tom pise Roy T. Fielding na svojom blogu http://roy.gbiv­.com/untangled/2008/rest-apis-must-be-hypertext-driven

Martin Malý aura:93
3. 8. 2009 2:26 Nový

Re: REST nie je protokol!

celé vlákno

Ano, děkuji za upozornění, REST je architektura, nikoli protokol. Opravil jsem na dvou místech spojení slov „REST“ a „protokol“, kde nemělo význam „protokol (typu) REST“, tedy „protokol založený na architektuře REST“.

myron
myron (neregistrovaný) 158.195.169.---
6. 8. 2009 19:56 Nový

Re: REST nie je protokol!

celé vlákno

REST nie je dokonca ani architektura, ale styl softverovej architektury. ROA je architektura, ktora splna REST a suvisi s HTTP a URI. http://en.wiki­pedia.org/wiki/Re­source_oriented_ar­chitecture

KLoK
KLoK (neregistrovaný) ---.kve.cz
7. 8. 2009 23:32 Nový

Re: REST nie je protokol!

celé vlákno

Ano krokodyl je sice plaz, ale hlavne patri mezi obratlovce, ci jeste lepe mezi strunatce…

myron
myron (neregistrovaný) ---.78-98-88.t-com.sk
19. 8. 2009 20:34 Nový

Re: REST nie je protokol!

celé vlákno

Nemozes ale povedat ze kazdy plaz je krokodil ;)

Peter Rybar aura:14
18. 1. 2010 14:03 Nový

Re: REST nie je protokol!

celé vlákno

Dakujem za pripomienku, v tom prvom prispevku som to uviedol, ale uz som nechcel tak bazirovat na terminologii aby sa autor neurazil. :)

peter
peter (neregistrovaný) 158.195.167.---
3. 8. 2009 2:05 Nový

zabudol som pochvalit

celé vlákno

Celkom pekny clanok. Dufam ze o RESTe a RESTovskych webovych sluzbach sa bude na roote viac pisat.

Martin Malý aura:93
3. 8. 2009 2:28 Nový

Re: zabudol som pochvalit

celé vlákno

Díky i za pochvalu. Na Zdrojáku se o podobných věcech psát určitě bude.

Patrik Votoček aura:24
3. 8. 2009 8:08 Nový

Mohlo být doplněno

celé vlákno

Škoda že není doplněno pár odkazů na knihovny které s RESTem umí pracovat. Např pro PHP, Python, Javu atd.

Martin Malý aura:93
3. 8. 2009 9:30 Nový

Re: Mohlo být doplněno

celé vlákno

S RESTful rozhraním dokáže pracovat každá knihovna, která umí poslat HTTP požadavek. Třeba i prostý JavaScript. Takže se nedá říct, že existují speciální „knihovny pro práci s RESTem“. Jsou konkrétní knihovny pro konkrétní API určité služby. Jak tu už bylo řečeno: REST není konkrétní protokol (protokol je třeba „obyčejné“ HTTP).

karmi
karmi (neregistrovaný) ---.net.angelnet.cz
3. 8. 2009 10:52 Nový

Re: Mohlo být doplněno

celé vlákno

Pozor, ano i ne. S RESTful rozhraními lze pracovat třebas jen curlem, jak hezky ukazuje článek. A právě ta „transparence“ RESTful rozhraní je jednou z killer features. Ale právě „wrappery“ pro různé platformy jsou to, co práci s RESTem dělá příjemnou a zajímavější. Typicky např. pro Ruby:

 

HTTParty [http://railstip­s.org/2008/7/29/­it-s-an-httparty-and-everyone-is-invited]

class Representative
  include HTTParty
end
puts Representative.get('http://whoismyrepresentative.com/whoismyrep.php?zip=46544').inspect
# "<result n='1' ><rep name='Joe Donnelly' ... /></result>"

 

RestClient [http://rest-client.heroku­.com/rdoc/]

RestClient.post 'http://example.com/resource', :param1 => 'one', :nested => { :param2 => 'two' }

 

A v neposlední řadě nekompromisní „objektově relační“ abstrakce nad REST rozhraním v podobě ActiveResource v Ruby on Rails [http://api.ru­byonrails.org/clas­ses/ActiveResou­rce/Base.html]

class Person < ActiveResource::Base
  self.site = "http://api.people.com:3000/"
end
ryan = Person.new(:first => 'Ryan', :last => 'Daigle')
ryan.save                # => true
ryan.id                  # => 2
...
Martin Malý aura:93
3. 8. 2009 10:54 Nový

Re: Mohlo být doplněno

celé vlákno

Děkuji za doplnění

Petr
Petr (neregistrovaný) ---.79.broadband12.iol.cz
3. 8. 2009 9:41 Nový

ATOM publishing protocol

celé vlákno

Zdá se mi to, nebo Atom je RESTful? Mám na mysli Atom jako protokol, v článku byl zmíněn „jen“ jako syndikační datový formát.

Mimochodem, používá vůbec někdo Atom pro něco víc než možná tak jako alternativu RSS, jako že by třeba svůj blog psal v nějaké desktopové aplikaci a přes Atom postoval na web?

Martin Malý aura:93
3. 8. 2009 9:45 Nový

Re: ATOM publishing protocol

celé vlákno

Nezdá… nakolik jsem ATOM studoval, tak jeho možnosti publikování jsou postavené právě na REST architektuře. (ATOM nebyl zmíněn jako „syndikační formát“, ale jako jeden z „formátů dat“, který nabízí Twitter. Já osobně ATOM nepovažuju za syndikační formát a snažím se jej všude uvádět jako „publikační datový formát“.)

Jan Tichý aura:23
3. 8. 2009 9:51 Nový

Re: ATOM publishing protocol

celé vlákno

Ano, Atom je právě moc hezká ukázka důsledného využití REST architektury, ostatně s tímto cílem byl i primárně vytvářen. To, že se postupem času ve většině využití redukoval jenom na syndikační formát, neboli druhé RSS, je věc druhá.

Martin Malý aura:93
3. 8. 2009 9:52 Nový

Re: ATOM publishing protocol

celé vlákno

… a je to škoda (ale to jen tak mezi námi).

xyz
xyz (neregistrovaný) ---.systinet.com
3. 8. 2009 13:03 Nový

Re: ATOM publishing protocol

celé vlákno

Napriklad my pouzivame atom na integraci systemu.

ludfan
ludfan (neregistrovaný) ---.orange.sk
3. 8. 2009 10:23 Nový

Twitter API porusuje zasady REST

celé vlákno

Podla RESTovskych zasad by URL nemalo obsahovat sloveso.

To znamena, ze spravne by sa mazat malo takto:

curl -u user:password --http-request DELETE http://twitter.com/statuses/1472669360.xml

Detto pre POST a PUT.

Autori API to nepochybne vedeli. Jedna sa asi o „ustupok vseobecnemu vkusu“.

Privital by som clanok, ktory by ukazal ako sa ten isty problem vyriesi pomocou tradicneho „RPC“ pristupu a pomocou REST pristupu.

Martin Malý aura:93
3. 8. 2009 10:24 Nový

Re: Twitter API porusuje zasady REST

celé vlákno

Řekl bych, že šlo o důvod, který zmiňuju v článku, tedy o „workaround“ pro ty klienty, kteří neumějí jiné HTTP metody než GET a POST.

t42
t42 (neregistrovaný) 77.48.59.---
3. 8. 2009 18:15 Nový

Re: Twitter API porusuje zasady REST

celé vlákno

take bych rekl

jen pro doplneni – dalsi takovou obechcavkou je dynamicke vygenerovani maleho formulare odesilajiciho data metodou POST pomoci javascriptu, viz Rails (bylo to tam driv, nevim jestli to nezmenili). Informace o tom, ze se ve skutecnosti jedna o PUT je prenasena v hidden field

ten formular vypada nejak takto:

  
  ...
Daniel Kvasnička ml. aura:82
3. 8. 2009 10:31 Nový

Upresneni...

celé vlákno

– jmeno autora je Roy Fielding, nikoliv Field

– doporucuju jeden z nejlepsich clanku vysvetlujicich samou podstatu RESTu: http://tomayko­.com/writings/rest-to-my-wife

– Stalo by za to vice rozvest vztah „stavu“ a „stavovosti“ k RESTu. Tedy ze jde o prenos reprezentaci stavu jednotlivych resources, ktery ale sam o sobe musi byt bezstavovy, tedy ze odpoved na kazdy request musi obsahovat veskera data potrebna pro jeji interpretaci a nesmi zaviset na datech ze zadneho prechazejiciho nebo nasledujiciho requestu.

– Mozna vic duraz na presnost terminologie… REST sam o sobe napr. neimplementuje zadne metody (POST, GET…). REST je neco jako interface treba v Jave, jeho aplikace v HTTP prostredi je neco jako implementace toho interface… viz ten Tomaykuv clanek, ktery abstrahuje REST od HTTP. REST na HTTP nutne nezavisi, ze je v 99.9 % dnes implementovan pres HTTP je vec jina. Take formulace „Pomocí HTTP GET požadavku získáme data konkrétního zdroje“ neni presna, ziskavame reprezentaci stavu zdroje… jasny, jsou to data, ale kdyz uz, drzel bych se terminologie…

Martin Malý aura:93
3. 8. 2009 10:42 Nový

Re: Upresneni...

celé vlákno

Děkuji za upřesnění. Fielding je opraven, díky.

Snažil jsem se o popis spíš z praktického hlediska než z hlediska terminologické přesnosti, protože nejde o odborné pojednání, ale o to, aby si čtenáři udělali zhruba obrázek „oč jde, když se řekne…“

Ano, je to „reprezentace stavu zdroje“, ale 80% webových vývojářů si pod tímhle termínem těžko něco představí a budou se tu hromadit komentáře „to je zase nějaký abstraktní blábol, nepoužitelné v praxi, blablabla…“ Takže ano, HTTP GET vrátí reprezentaci stavu zdroje, ale říct, že jsou to data, je na tomto místě přípustné zjednodušení. Totéž abstrakce REST a HTTP – je samosebou lepší, ale jsme na Zdrojáku, kde 99% čtenářů tvoří lidé, pro něž je HTTP denním chlebem, takže jsem si opět dovolil zjednodušení.

Každopádně děkuji za doplnění a upřesnění terminologie.

karmi
karmi (neregistrovaný) ---.net.angelnet.cz
3. 8. 2009 11:41 Nový

Re: Upresneni...

celé vlákno

Kromě skvělého Ryana Tomayka bych přidal ještě odkaz na „žargonu prostý“ Tilkovův seriál na InfoQ: http://www.in­foq.com/articles/rest-introduction

Karel
Karel (neregistrovaný) 93.90.162.---
3. 8. 2009 10:55 Nový

Chyba odkazu

celé vlákno

Tak jsem si zkusil kliknout na příklad GET z twitteru ve formátu XML. A výsledkem byl krásný XML dokument. O pár řádků níže je příklad téhož, ve formátu rss (http://twitter­.com/statuses/u­ser_timeline/lu­pacz.rss). Kliknu a .. mám opět krásné XML. Vypadá to, že text hyperlinku správně obsahuje koncovku .rss, ale samotný hyperlink odkazuje stále na .xml.

Martin Malý aura:93
3. 8. 2009 10:56 Nový

Re: Chyba odkazu

celé vlákno

Ano, překlep, opraven, děkuji.

benzin
benzin (neregistrovaný) 195.250.135.---
3. 8. 2009 16:37 Nový

bezstavovost

celé vlákno

Vim ze hlavni deviza RESTu je jeho bezstavovost. Znamena to tedy, ze uzivatel se neustale znovu autentifikuje?

Muzu v RESTu ziskat od serveru nejaky hodnotu, kterou nasledne pouziju k volani? A co takto ziskat identifikator session?

Martin Malý aura:93
3. 8. 2009 18:52 Nový

Re: bezstavovost

celé vlákno

Ano, je potřeba se pokaždé znovu autentifikovat. Zkuste na celou věc nazírat jako na atomické operace nad daty: Klient požádá o operaci s daty, dodá potřebné informace, a operace proběhne (i když výsledkem může být chybové sdělení). Tato akce není závislá na žádné předchozí akci a neovlivňuje žádnou následující akci. To je základní princip architektury REST.

Ostatně trend vývoje webových aplikací směřuje k tomu uchovávat autentifikační informace i „session“ na straně klienta.

Petr
Petr (neregistrovaný) ---.i4g.tmcz.cz
3. 8. 2009 22:49 Nový

Re: bezstavovost

celé vlákno

Pánové, prosím, jsme na odborném webu: identifikace – autentizace (ještě snesu autentikace) – autorizace – (accounting).

Nikdy, ale nikdy „autentifikace“. :-/

Martin Malý aura:93
4. 8. 2009 9:58 Nový

Re: bezstavovost

celé vlákno

Klasická sentence praví: „Nikdy neříkej nikdy“ – jedná se o synonyma, jsou to tři různě utvořené české tvary bez významového rozdílu, a můžeme se dohadovat o zvyklostech, ale nikoli o tom, které z nich je „správné“. Na toto téma viz článek Dalibora Behúna.

Ale jinak máte pravdu, zvyklost na Zdrojáku velí „autentizace“, ovšem za mne to řeší korektorka, takže jsem v tomto případě použil stejné slovo, jaké použil tazatel. :)

povinná
povinná (neregistrovaný) ---.62.broadband3.iol.cz
6. 8. 2009 22:14 Nový

Re: bezstavovost

celé vlákno

Ani „autentizace“ do češtiny nepatří. Rozhodně jsem ji nenašel ve slovníku.

uf
uf (neregistrovaný) ---.pvt.cz
5. 8. 2009 11:44 Nový

diky za info

celé vlákno

Diky za clanek. Zrovna minuly tyden jsem si rekl: Sakra, podivam se poradne, co to je. Jedine, co jsem vedel bylo, ze je to zpusob bezstavovych pozadavku na zdroje predavanych jako atomicke operace. Kupodivu to staci ! :-)

mezi nami – prikazy v davce take mohou REST – copy, zip, … Proste reknete tady pridej a ono se to udela, pak pod to pridam dalsi informace a ocekavam, ze to bude nebo se mi oznami chyba. to je REST.

dotaz? Komplexni zmena (tj. tam, kde bych delal transakci) musi obsahovat vsechny informace a byt postavena jako jedna operace?

chruj
chruj (neregistrovaný) 81.0.241.---
5. 8. 2009 20:37 Nový

výborná prednáška na dané téma

celé vlákno

trochu hustší pro ty co o tom slyší poprvé, ale stojí za to (Flash required): Stefan Tilkov: RESTful Design

Zasílat nově přidané příspěvky e-mailem