
Praten met de API van iemand anders zonder opnieuw HTTP-kleefmiddel te schrijven
2 Jul 2026
Elke integratie met een externe API begint op dezelfde manier: lees de documentatie, begrijp de authenticatie, schrijf een dunne wrapper rond HTTP(), voeg retry-logica toe waar niemand om heeft gevraagd tot de derde storing, en herhaal dit voor de volgende leverancier. Het connectors-framework van Phlo bestaat om dat deel te stoppen met herhalen.
Eén basis klasse, één contract
Elke connector breidt een gedeelde Connector basis uit: credential resolutie vanuit een creds.ini sectie, JSON verzoekhelpers gebouwd op HTTP(), opt-in idempotente retry, paginering, en een genormaliseerde resultaatvorm, obj(ok, status, data, error), zodat aanroepende code nooit vertakt op een leverancier-specifiek responsformaat.
$res = (new Shopify)->orders(['status' => 'open'])
if (!$res->ok) return error($res->error, $res->status)
foreach ($res->data AS $order) ...
OAuth-gebaseerde providers delen een verdere OAuthConnector basis met een TokenStore die automatisch ververst, zodat de vervaldatum van tokens op één plek wordt afgehandeld, in de gedeelde basisclass, en niet per integratie.
Wat vandaag wordt geleverd
Shopify en Lightspeed voor retail, Slack, Telegram, Twilio en MessageBird voor messaging, Resend voor transactionele e-mail, Moneybird, Exact Online en e-Boekhouden.nl voor boekhouding, Microsoft Graph, Google Calendar en Google Sheets voor het Google en Microsoft ecosysteem. Elk van deze is een dunne, gedocumenteerde class bovenop hetzelfde contract, geen op maat gemaakte SDK met eigen idiomen om opnieuw te leren.
QUERY, voor reads met een body
Een recentere toevoeging aan het connectorcontract is de QUERY HTTP-methode (RFC 10008): een veilige, idempotente read die een request body meedraagt, voor een lookup waarvan de filters niet netjes in een URL passen. route QUERY search => $this->search wordt geparsed zoals elke andere route, %payload decodeert de QUERY body op dezelfde manier als het een POST decodeert, en HTTP() neemt een bijpassend QUERY: argument, zodat een connector of je eigen app een API kan aanroepen die precies deze vorm verwacht zonder het zelf te hoeven implementeren.
Het deel dat daadwerkelijk tijd bespaart
De waarde ligt niet in een enkele connector, het is dat het toevoegen van de volgende betekent dat je de vendor-specifieke requestvorm één keer implementeert en de afhandeling van inloggegevens, herhalingen en paginering gratis erft. Een integratie die anders een klein op maat gemaakt project zou zijn, wordt een middag van het in kaart brengen van de endpoints van één API op een contract dat al werkt.