Web Services hebben we het over het gedeelte van het internet dat begrepen kan worden, in tegenstelling tot het gewone web van web sites, door computer systemen. Er zijn verschillende manieren hoe je computer A over het internet met computer B kunt laten praten, en de RESTful wijze is er daar 1 van. In het boek RESTful Web Services, geschreven door Leonard Richardson en Sam Ruby (ISBN nr.: (978) 0596529260), wordt deze wijze uitgebreid behandeld.
Ten opzichte van andere manieren van communiceren over het internet is dat het uit gaat van de eenvoud van het HTTP protocol, dit in tegenstelling tot b.v. SOAP en RPC. Hoewel ook deze technologiën uiteindelijk wel over het HTTP gaan hebben deze technologiën een geheel andere benadering in de wijze waarin informatie op gevraagd en gemanipuleerd kan worden. Deze benadering is resource oriented, i.p.v. activity oriented. In plaats van de actie die veelal centraal staat in SOAP en RPC, staat de bron centraal, de resource. En dat is ook hoe het internet (oorspronkelijk) ook geörienteerd is. Het internet gaat ook uit van adresseerbare bronnen door middel van een URI (Unique Resource Identifier). Globaal past het hele betoog van de auteurs binnen de notie ‘Don’t fight the internet’ (Eric E. Smidth van Google).
De acties die we uitvoeren, zo leggen Richardson en Ruby uit, zijn bij voorkeur beperkt tot de simpele acties die het HTTP protocol ons geeft: GET, PUT, DELETE, POST , HEAD.
We kunnen dus een object ophalen met GET, en we krijgen dan het gevraagde terug. Willen we dit object aanpassen, of aanmaken, kunnen we PUT gebruiken. Willen we dit object verwijderen gebruiken we DELETE, willen we iets aan dit object hangen POST en willen we alleen de metadata hebben gebruiken we HEAD. Oplettende lezers herkennen hier natuurlijk het CRUD principe, create, read, update delete, dat “staat voor de vier basisoperaties die op duurzame gegevens (meestal een database) uitgevoerd kunnen worden” (wikipedia).
Aan de hand van vele voorbeeld applicaties (waaronder een soort (Google/Live/Yahoo!) Maps web applicatie, en een del.icio.us kloon) tonen Richardson en Ruby hoe je met deze simpele methodes bijna iedere webapplicatie kunt bouwen.
Het boek is erg praktijk gericht. Zo geven ze o.a. een handig 9 stappen plan om een ontwerp te maken van de RESTful interface (hetgeen gepresenteerd wordt aan de andere machine’s (maar ook over het algemeen leesbaar is voor de mens):
Het boek vervolgt verder met allerlei handige aanwijzingen, met betrekking tot hoe een url ontworpen zou moeten worden, dat bestaande standaarden waar beschikbaar zoveel mogelijk hergebruikt zouden moeten worden (denk aan o.a. ATOM, maar ook aan de verscheidene microformats), en dat zelfs transacties uit te drukken zijn in een RESTful manier (door b.v. de transactie zelf een resource te maken).
Wat betreft URI ontwerp was het voor mij een verfrissende gedachte dat de URL niet altijd hiërarchisch hoeft te zijn (een structuur van ‘mappen’, gescheiden door een ‘/’), maar ook gebruik maakten van komma’s (om geordende informatie te communiceren) en puntkomma’s (om ongeordende informatie te communiceren). En wanneer het gaat om queries, dan is het zeker niet ongepast om query variabelen te gebruiken (b.v. ?q=search+string). Een RESTful URL hoeft dus echt niet altijd een ‘pretty URL’ te zijn. Het zijn werkbare principes die je ook goed kunt toepassen op goed URI ontwerp voor het menselijke web.
Samenvattend is het een veel omvattend boek. Het bevat niet alleen een goed inzicht in de basis principes van RESTful webservices, maar staat ook boordevol voorbeelden en uitgewerkte cases in vooral Ruby on Rails, maar ook Java en Python (Django). Ook is er ruimte voor enige, doch (natuurlijk?) beperkte, kritiek, in het hoofdstuk waarin resource oriented webservices worden vergeleken met de ‘ouderwetse’ webservice technologiën als RPC en SOAP. Het wordt al snel duidelijk hoe veel simpeler REST is ten op zichte van SOAP, en ja, ookal is dit een pro REST boek, weet ik uit eigen college ervaring dat SOAP echt niet fijn is.
Omdat ik voor het lezen reeds overtuigd was van de kracht van het REST principe kreeg ik wel het gevoel dat het boek vaak in de herhaling viel. Maar mogelijk is de herhaling wel goed voor zij die nog overtuigd dienen te worden. Dus hoewel het boek mijns inziens dunner had gekund, is het zeker geen slecht overzicht / naslagwerk voor zij die geïnteresseerd zijn of willen werken met REST.
Deze post verscheen eerder op The Bean Blog
Vond je dit leuk, volg me op Mastodon, voeg die RSS, euh ATOM feed toe aan je feedreader, of schrijf je hieronder in op mijn nieuwsbrief.
Dit artikel van murblog van Maarten Brouwers (murb) is in licentie gegeven volgens een Creative Commons Naamsvermelding 3.0 Nederland licentie .