Web services in Drupal - Wat, waarom en hoe

17 Feb 2015

Joris Snoek
Digital Consultant
+31 (0)20 - 261 14 99

Wat is een web service API

Het W3C definieert een web service als volgt:

‘A Web service is a software system designed to support interoperable machine-to-machine interaction over a network’.

Oftewel: web services is een gedocumenteerde en gedefinieerde manier voor twee computers om met elkaar te communiceren via het internet. Een computer kan alles zijn wat aan het internet verbonden is. Dus ook een Playstation, een smartwatch of een thermostaat. Denk aan: 'the internet of things'.

Application Programmer Interface

API betekent: Application Programmer Interface. API’s definiëren hoe software en dus computers met elkaar kunnen communiceren. We maken constant gebruik van API’s zonder dat je dit door hebt. Wanneer je bijvoorbeeld een stuk tekst kopieert en plakt van het ene in het andere programma, dan wordt dit gedaan door middels een API. De programma’s ‘praten’ met elkaar, zonder dat hier een mens aan te pas komt.

Gestandaardiseerd en gedocumenteerd

Je kunt een API ook zien als een gestandaardiseerde en gedocumenteerde manier om toegang te krijgen tot content en functies van een applicatie. Zo kan je bijvoorbeeld als een onafhankelijke ontwikkelaar toegang krijgen tot gegevens uit Facebook middels de Facebook API. Een voorbeeld van Facebook’s ‘Graph API explorer’, waar iedereen bij kan:

 

API Documentatie

API Documentatie is zeer belangrijk, anders heeft niemand een idee hoe je de API kan gebruiken om de juiste gegevens te verkrijgen. Zonder goede documentatie is een API waardeloos.

Hoe werkt het in de basis

Een externe applicatie doet een verzoek voor data middels een Drupal web service API. Drupal geeft data terug in de juiste gestructureerde manier (bv JSON), zodat de externe applicatie de data kan gebruiken. Het externe programma kan ook gebruikers aanmaken, een node aanmaken, een wachtwoord resetten, etc.

Waarom web services

In meeste gevallen worden web services gebruikt om mobiele applicaties te voorzien van data. Wanneer je bijvoorbeeld de App van nu.nl bekijkt, dan zullen die nieuwsitems ergens beheerd moeten worden. Diezelfde nieuwsitems worden op hun website geplaatst, maar ook op Android apps en in toekomst misschien op Smart-TV's , smartwatches en wat er allemaal nog meer uitgevonden gaat worden.

Toekomstbestendig
Web services zijn toekomstgericht: wat er ook komt na iOS of Android, dat nieuwe applicatieplatform kan ook gegevens via de gewenste web service API opvragen en wijzigen. 

Oftewel: the internet of things kan centraal bevoorraad worden met content, gebruikers, etc.

Web services in Drupal

Er zijn meerdere modules in Drupal die web services kunnen faciliteren, de meest bekende zijn Restws en Services.

Deze twee modules zorgen ervoor dat data en interne functies uitgeserveerd worden naar andere applicaties via een Drupal web services API. Een externe applicatie kan ‘tegen deze modules aanpraten’ en gestructureerde data terugkrijgen, waar iets mee gedaan kan worden. Voorbeelden van externe applicaties: een iOS of Android app zijn, maar ook een Playstation, smart-tv, smartwatch of zelfs een thermostaat. Oftewel, alle dingen in the internet of things.

Drupal Module: Restws

Restws is goed in RESTful web services en benodigde CRUD actie voor alle Drupal entiteiten, maar heeft verder geen extra web services als SOAP, XML-RPC, etc. Ook kan je geen ‘service endpoints’ definiëren en configureren.

Drupal Module: Services

De Services module kan alles wat Restws kan en veel meer. Het is een complete toolkit om Drupal te voorzien van web services. Het kent Drupal’s node, -entity en CRUD -systeem en biedt mogelijkheden om zelf service endpoints aan te maken en te configureren. Ook ondersteunt de module meerdere interfaces als REST, XMLRPC, JSON, JSON-RPC, SOAP, AMF en meer.

Daarnaast biedt het een aantal standaard functies, waardoor je snel de standaard web services up-and-running hebt, bijvoorbeeld het opvragen van node content details. Dit kan letterlijk binnen 10 minuten voor elkaar zijn. Specifieke use cases vergen uiteraard meer inspanning, maar bij alle maatwerk wensen faciliteert deze Services module al een groot deel van de benodigde functies. Zoals gebruikers aanmaken, een node aanmaken, een wachtwoord resetten, etc.

Drupal Module: Views datasources

Dit is een module waarmee je middels Views zelf endpoints kan aanmaken en gegevens via dat endpoint uitserveren. En dit alles zonder een regel te hoeven coderen. Betreffende gegevens kan je configureren in de View. Let op dat dit nog een alpha versie is en handig kan zijn voor standaard lijstjes: bijvoorbeeld laatste 10 nieuws items.

Meer complexe use cases
Maar als de query complexer wordt voldoet deze module nog niet, je zult dan een custom eindpoint moeten maken in code en je eigen queries moeten coderen. Bij deze custom eindpoints kan je wel inhooken op de Services module, die veel functies faciliteert voor je. Je hoeft dus niet from scratch een Drupal web service te coderen.

Web services in Drupal 8 

In Drupal 8 zijn web services in de Drupa core verwerkt, geen modules meer nodig dan!

Wrap up

Ok, that's it for now. Maar gezien wij momenteel enthousiast bezig zijn met een groots Drupal web services project, zullen blogs volgen met specifieke use cases hierover.

-- Cheers!

Bron foto

Comments

Nóg meer
kennis nodig?

Check ons ons blog archief >