Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

We kunnen nu de API/WebHook aanroep inrichten door de BRO_ID parameter in de aanroep toe te voegen.

...

Info

De Rest-API’s leveren gegevens terug in json formaat. In Onemap moet deze json vervolgens geparsed worden naar een html formaat m.b.v. TWIG.

In dit geval wordt de grafiek in svg ( xml formaat) terug geleverd als waarde van het json item 'json_result'. Deze waarde kan direct worden opgenomen in de featureinfocode als waarde.

Omdat FME de json altijd als json-array teruggeeft moet eerst nog het eerste element naar een 'normale' json worden gezet.

De api koppeling die naast de featureinfo is ingericht komt , binnen de featureinfo, als tabblad/button beschikbaar. Door hier op te klikken wordt een request naar de fme server webhook verstuurd ( met het bijbehorende bro_id) en wordt ( in dit geval) het bodemprofiel grafisch teruggeleverd.

...

Opdracht:

1-Ontwikkel en implementeer met FME een API koppeling om de bodemprofielen als grafiek in de featureinfo te kunnen bekijken.

Iedere REST interface vraagt kennis over de opbouw en de inhoud die de Rest services leveren. Meestal worden de Rest services in een vorm gepresenteerd (bv swagger UI) waarmee de gebruiker individuele endpoints kan testen.

Info

We gaan eerst de te nemen stappen uitvoeren op de swagger_UI van de BRO rest interface.

Vervolgens gaan we deze stappen geautomatiseerd opnemen in een FME script.

Bekijk de REST services op BRO Rest services, we zien hier dat er twee sets van endpoints worden gegeven:

  1. uitgifte

  2. visualisatie

We pakken eerst de BHRP uitgifte service.

BHR-P uitgifte en validatie
url: https://publiek.broservices.nl/sr/bhrp/v2

Als we deze openen en vervolgens de documentatie link openen komen we uit op de swagger UI van deze rest services.

Hier zien we een endpoint om gegevens van een individueel boorpunt op te halen.

/sr/bhrp/v2/objects/{broId}

Als je deze openklikt en kiest voor 'tryout' kun je kijken wat dit endpoint terug levert. Probeer dit voor het volgende boorpunt ID: bro_id: BHR000000350843

Vul het broid in en klik op 'execute'

Je ziet vervolgens hoe de vraag wordt afgevuurd (request url). Bij een correcte verwerking krijg je een responsecode 200 en het antwoord.

image-20240508-111033.pngImage Added

Kopieer dit antwoord naar het clipboard

image-20240508-111124.pngImage Added

We gaan nu naar de bijbehorende visualisatie Rest services:

Hier zien we o.a. het volgende endpoint:

/sr/sfr/v2/profile/graph/dispatch

met als omschrijving: Grafische weergave boorprofiel op basis van een uitgifteresultaat (laag, diepte, kleur).

Ga ook deze middels 'tryout testen.

We hebben hier een veld 'request body' waarvan we de inhoud kunnen vervangen door het zojuist gekopieerde antwoord van het uitgifte-endpoint.

Als we deze uitvoeren zien we weer de uitgevoerde request en het antwoord. In het antwoord zien we dat er een xml wordt terggegeven en dat deze een SVG item bevat.

Deze svg zal in een html pagina worden getoond als de bodemprofiel grafiek.

...

We hebben het ophalen van een bodemprofiel grafiek voor een boorpunt nu uitgevoerd op de swagger-UI endpoints van de BRO rest services.

Probeer deze stappen nu op te nemen in een FME script:

1-defineer een user parameter voor de bro id

2-gebruik een http_caller om de uitgifte gegevens op te halen ( uitgifte GET met een bro_id als parameter)

3-gebruik een http_caller om het uitgifte resultaat als SVG grafiek op te halen (visualisatie POST met response uit eerste call als body)

4-plaats het resultaat van de SVG call in een json writer

opm: xml header uit de SVG response moet nog worden verwijdert. Dit kan bv met:

image-20240508-112759.pngImage Added

Maak zelf een attribuut aan in de json writer waarin het SVG resultaat wordt geplaatst.

...

Als het script goed werkt kan het naar FME server worden gebracht om als 'convienient API' te worden gebruikt voor Onemap.

2-Uploaden naar FMEServer en inrichten als webhoook

Upload het script naar fme server. Dit kan via de publish knop in de menubar.

image-20240530-135333.pngImage Added

Gebruik de reeds aanwezige connectie (meteen naar next)

image-20240530-142603.pngImage Added

Selecteer de repositry 'workshop', en geef de fme script de prefix die overeenkomt met de workshop kaart waarin je aan het werk gaat ( bv: BRO_boring_workshop_1)

image-20240530-135819.pngImage Added

Registreer de service als een 'Data Streaming' service en publiceer:

image-20240530-135904.pngImage Added

We gaan nu op FMEServer het FME script inrichten als een 'FME Webhook'. Deze webhook kan daarna in Onemap worden opgenomen en worden ingericht om het antwoord van het fme script vanuit dee object-featureinfo op te halen.

Open workshop fmeserver en login met:

gebruiker=workshop

paswoord=pohskrow

Selecteer repository=workshop en workspace= 'jouw script'

Kies vervolgens onder ‘workspace actions' voor 'create webhook’

image-20240530-144404.pngImage Added

Een FME Server Webhook vormt een API-endpoint dat met een api-key is geauthoriseerd.

Download de webhook configuratie instellingen en bewaar deze.

...

Configureer de API koppeling in Onemap

Log in op de workshop workspace

workshop

Er zijn 5 kaartbeheerders en 5 beschikbare kaarten. Je krijgt hiervoor een nummer toegewezen.

gebruiker = workshop_FME_1

paswoord = workshop_FME_1

Allereerst wordt het basis endpoint toegevoegd bij de API-configuraties in de workspace systeem instellingen.

Het basis endpoint bevat de basis-URL ( alles tot het ? ) en een HTML header met de benodigde authorizatie.

image-20240507-102159.pngImage Added

image-20240507-102347.pngImage Added

Open nu de aan jouw toegewezen workshop kaart (bv FME workshop 1)

We kunnen nu de API/WebHook aanroep inrichten door de BRO_ID parameter in de aanroep toe te voegen.

1-Kies de zojuist ingerichte api-koppeling en breid deze uit met de benodigde parameter waarde van het aangeklikte feature.

2-Voeg ( in broncode modus) de twig statements toe om de json inhoud te visualiseren.

...