Een brug om te laten zien hoe API's een connectie kunnen leggen tussen twee systemen

Systemen koppelen? De mogelijkheden zijn eindeloos

Geschreven op 18 oktober 2019 door Harmen Siedsma

Stel dat je data (informatie) wilt beheren in verschillende systemen. Je hebt bijvoorbeeld een klantenregister in een CRM-applicatie (CRM staat voor Customer Relationship Management) of je hebt een webshop met allerlei producten die je in een inventaris-applicatie beheert maar via je website wilt aanbieden. Doordat je deze informatie opstuurt, ophaalt of synchroniseert tussen je website en een applicatie die geschikt is voor jouw bedrijfskritische processen profiteer je van de kracht en de mogelijkheden van beide systemen. Deze informatie-uitwisseling is mogelijk wanneer beide systemen ‘tegen elkaar kunnen praten’. In IT-terminologie wordt dit een API-koppeling genoemd.

Wat is een API-koppeling?

API staat voor ‘Application Programming Interface’, een wat cryptische naam voor een techniek die communicatie tussen verschillende systemen mogelijk maakt. Je zou het voor je kunnen zien als een aansluiting aan beide kanten waar je op in kan pluggen.

API-koppelingen worden veelvuldig gebruikt en natuurlijk zijn er veel verschillende technieken voor. Één van de technieken die wij veelvuldig inzetten is een combinatie van Drupal en een PHP-module die de koppeling mogelijk maakt. Drupal en PHP zijn zeer geschikt voor het koppelen van systemen. Voorwaarde is natuurlijk wel dat het externe systeem hiermee kan communiceren, maar in de meeste gevallen is dat wel zo.

Hoe werkt een API-koppeling?

Een API-koppeling regelt dataverkeer. Informatie wordt opgestuurd, ontvangen of gesynchroniseerd. Aansluitend op het voorbeeld van een klantenregister kun je bijvoorbeeld aangemelde accounts op de website doorsturen naar een CRM-applicatie. De richting waarin de data overgedragen wordt bepaalt het type communicatie van de API. Een API kan aan de ontvangende kant staan of juist de informatie versturen. De uitwisselingen van informatie worden in IT-terminologie requests genoemd. Als informatie wordt opgestuurd, wordt dit wel een POST- of PUT-request genoemd en wanneer data wordt opgehaald, noemt met dit wel een GET-request.

Het dataverkeer moet natuurlijk wel veilig gebeuren en daarom worden verschillende authenticatiemethoden ingesteld. Een request bevat dus vaak ook authenticatiegegevens. Soms zie je dat de communicatie meerdere malen heen en weer gaat, waarbij de eerste request zorgt voor de authenticatie en de tweede voor het doorsturen van content. Een niet te verwaarlozen oogpunt is natuurlijk ook de versleuteling van de data met behulp van bijvoorbeeld een SSL-certificaat.

Protocollen - oftewel hoe de data eruitziet in een request

Behalve dat je misschien een ledlampje ziet knipperen op je computer of modem kun je natuurlijk niet zien wat er over de lijn gaat. Maar als je kijkt naar de datastructuur zie je wel dat er verschillende methoden zijn, die protocollen worden genoemd. Zo heb je bijvoorbeeld XML, waarbij de data tussen ‘vergelijkingstekens’, zoals je in het eenvoudige voorbeeld hieronder kunt zien:

<producten> 
     <product>
     <naam>Kerstkaart</naam>
     </product>
</producten>

Een ander protocol is JSON, waarbij de code er weer anders uitziet met accolades en aanhalingstekens, zie het volgende voorbeeld:

{ "product":"Kerstkaart", “prijs”:”€1,50"} 

Om deze verschillende soorten informatie te kunnen ‘lezen’ beschikt PHP standaard over pakketjes en functies. Wanneer bijvoorbeeld je website data ontvangt, kan PHP dit verwerken op allerlei manieren. Je kunt de data opslaan of weergeven op je website, of je kunt PHP een actie uit laten voeren zoals het versturen van e-mail enzovoorts.

Het ‘bezorgadres’ van de informatie (‘end point’) en de ontvangstbevestiging (‘response’)

Informatie moet natuurlijk wel op het juiste adres terechtkomen. In API-terminologie wordt dit het ‘end point’ genoemd. Dit is doorgaans een URL (oftewel een webadres als https://mijnwebsite.com/bezorgadres). Als de informatie naar dit adres gestuurd wordt, moet je dat dus afvangen en verwerken en in veel gevallen wil je ook een ontvangstbevestiging ‘response’ sturen. In deze response kun je bijvoorbeeld aangeven dat de boodschap goed is overgekomen of dat er iets mis is gegaan. Voor de verstuurder aan de andere kant van de lijn is het natuurlijk nuttig om ook meer informatie te krijgen als er iets mis is. Daarom doe je er goed aan om ook genoeg aandacht te besteden aan de foutafhandeling (‘error handling’).

Hoe werkt Drupal met API’s?

Heel simpel gezegd werkt Drupal op twee manieren met API, afhankelijk van de richting van het dataverkeer. Drupal kan informatie versturen, ophalen en ontvangen in verschillende protocollen.

De manier waarop Drupal informatie ontvangt is eigenlijk standaard de manier waarop Drupal omgaat met het aanroepen van een URL. Je typt een webadres in of je klikt op een link en dan ga je naar een pagina in Drupal. Deze actie - het bezoeken van een pagina in Drupal - noemen we het aanroepen van een URL. Wanneer een URL wordt aangeroepen in Drupal, dóet Drupal iets. Wat Drupal dan doet, kunnen wij als programmeurs ook zelf bepalen. In het geval van API’s definiëren we dus een URL, oftewel (zie ook hierboven) en functies die de binnenkomende informatie verwerken. Dat kun je zo gek maken als je zelf wilt. Ik noem maar een dwarsstraat: als je in de informatie de naam ‘Lassie’ tegenkomt, kun je een mailtje versturen naar je baas en er ‘ weet je wel, die collie uit die serie’ erachteraan zetten en een plaatje van Lassie erin zetten.

Wanneer Drupal informatie verstuurt of ophaalt kun je gebruik maken van ingebakken functies die ervoor zorgen dat de informatie netjes gestructureerd wordt en ook nog eens feedback geven over het slagen of mislukken van de request. Drupal kan er ook voor zorgen dat je op gezette tijden informatie opgehaald of verstuurd wordt in zogeheten ‘onderhoudstaken’. Dan kun je gewoon instellen dat de informatieuitwisseling bijvoorbeeld elk uur of alleen op dinsdagen om 19:23 plaatsvindt. Ook hierin zijn legio mogelijkheden.

Belangrijke overwegingen

Nu we gezien hebben dat je met Drupal en PHP van alles kan op het gebied van API-koppelingen, is het natuurlijk wel belangrijk hóe je het allemaal opzet. Zoals eerder al gezegd is natuurlijk de veiligheid een belangrijk oogpunt. Je wilt bijvoorbeeld niet dat iedereen zo maar kan kijken wat het verschil is tussen de inkoopprijs en de verkoopprijs van je producten. Ook heb ik al aangestipt dat een goede foutafhandeling erg bevorderlijk is. Gaat er iets mis, dan kan een gedegen foutmelding je snel wijzen op waar het fout gaat en kun je er ook snel iets aan doen. Verder is het belangrijk om de netwerkbelasting voor ogen te houden. Als je elke vijf seconden probeert om 600.000 producten te importeren uit je inventaris-applicatie ga je dat gegarandeerd merken in de snelheid van je netwerk en je website. Je probeert dan natuurlijk alleen zaken op te halen die nieuw of veranderd zijn met een frequentie die niet voor overlast zorgt. Als laatste noem ik nog een logische datastructuur. Als twee systemen aan elkaar gekoppeld zijn kan er altijd aan een kant iets veranderen waardoor de andere kant het niet meer ‘snapt’. Dan is een logische, schaalbare en begrijpelijke opbouw van je API-module erg handig, omdat je de koppeling dan makkelijk en snel aan kan passen of uitbreiden.

Wil jij een koppeling of meer weten?

Ik heb in dit artikel natuurlijk lang niet alles gezegd over API-koppelingen. Wil je meer weten of jij je systeem kunt koppelen of over hoe het allemaal werkt, dan kun je ons gerust mailen of bellen. Scrol maar daar naar beneden, daar vind je onze contactgegevens.

Meer nieuws