RESTful Webservices
De term ‘REST’ is een term die door Roy Fielding is bedacht in zijn proefschrift om een architectuur te beschrijven voor genetwerkte systemen. De term staat voor ‘Representational State Transfer’.
Wat is het wel:
Het is een beschrijving hoe je data kunt benaderen. Het idee komt van het internet af, waarbij data via een URI data kunt benaderen en waar in die data weer verwijzingen zijn opgenomen naar URI’s voor meer informatie van andere data.
Wat is het niet:
Het is geen standaard over de hoe de data eruit ziet. Een voorbeeld maakt alles stukken duidelijker:
http://3voor12.vpro.nl/rest/profielen
<profielen>
<profiel name="marcel" href="http://3voor12.vpro.nl/rest/profielen/marcel” />
<profiel name=”ad” href=”http://3voor12.vpro.nl/rest/profielen/ad” />
<profiel name=”p3t0r” href=”http://3voor12.vpro.nl/rest/profielen/p3t0r” />
</profielen>
http://3voor12.vpro.nl/rest/profielen/marcel
<profiel name="marcel" public_profile="true">
<text>remarks about my profile</text>
<image title="my_picture.jpg" href="http://images.vpro.nl/images/29805882“/>
</profiel>
Zoals je kunt zien beschrijft het niet zozeer de inhoud, maar wel dat er een url is die alle profielen ophaalt en een url om een specifiek profiel te benaderen. Als je nou de vrienden van profiel ‘marcel’ zou willen benaderen, dan krijg je:
http://3voor12.vpro.nl/profielen/marcel/vrienden
En voor de hitlijst van het profiel van ‘marcel’:
http://3voor12.vpro.nl/profielen/marcel/hitlijst
Het idee gaat verder, in de specificatie van HTTP is niet alleen opgenomen dat je dingen op kunt halen, maar ook dat je dingen kunt wijzigen. De specificatie van HTTP naast GET de PUT, POST en DELETE. Door nu toe te staan op de server dat PUT op een profiel wordt toegestaan, kun je dus het profiel aanpassen door die gegevens te POSTen naar:
http://3voor12.vpro.nl/profielen/marcel
Rest is:
- stateless: je moet alles meesturen in een request
- cachable: alles zit netjes achter een url, en die url kun je net zo cachen als een normale webpagina
- uniform: alles is benaderbaar met dingen die we al kennen van HTTP
- interconnected: je kunt van resource naar resource springen door de URI’s die in de resource zitten
REST vs SOAP
SOAP is een systeem waarbij er xmls gestuurd en ontvangen worden, waarbij voor elke xml exact beschreven is hoe de xml eruit moet zien (WSDL). Het is daardoor beter, maar gelijk ook ontzettend veel complexer en zwaarder. Elke xml wordt vooraf gegaan door een beschrijving hoe de xml eruit moet zien, gevolgd door de inhoud. Het voordeel is dat alles exact is afgesproken, maar heeft als groot nadeel dat je een complexe xml moet sturen om een complexe xml van bijvoorbeld een profiel-beschijving ervoor terug te krijgen. Het is niet vanuit een browser te benaderen, het is niet leesbaar maar wel altijd valide.
LINKS
- REST
- JAVA
- NLJUG
januari 9th, 2009 at 15:14
testing een youtube url, en Anarchy media:
http://www.youtube.com/watch?v=uNYMw9O2bu4