De API kan gebruikt worden in combinatie met een script omgeving. Hier zijn een aantal voorbeelden opgenomen die zijn gemaakt met een Python (Jupyter lab) omgeving. In het voorbeeld worden alle stappen van de API toegelicht. Basiskennis van het gebruik van Python is verondersteld.
Table of Contents |
---|
Informatie van de API opvragen
U kunt informatie van de API opvragen zonder in te loggen. In onderstaand voorbeeld definieren we eerst het gebruik van de module ‘requests' (zie ook deze documentatie), zodat we de HyDAMO validatie-API in Python kunnen gebruiken. Ook definieren we het gebruik van de module 'os' zodat we later eenvoudig bestanden en paden kunnen samenvoegen (met het commando os.path.join). Vervolgens geven we de URL van de server met de HyDAMO validatie-API op. Omdat de webservice gebruikt maakt van een (HTTPS) beveiligingscertificaat moeten we deze ook meegeven (@@@@ locatie git @@@@). Daarna voeren we het GET request uit voor het verkrijgen van de informatie en slaan we het resultaat op in de variabele 'response’. Als de HTML statuscode van de response gelijk is aan 200 (de API geeft succesvol een resultaat van onze request), dan schrijven we het resultaat van de response naar het scherm. In Python code ziet dat er als volgt uit:
Code Block | ||
---|---|---|
| ||
import requests import os server = "https://validatie-api.hydamo.nl" hydamo_cert = r"...\HyDAMOValidatietool.pem" #https://validatie-api.hydamo.nl/ response = requests.get(f"{server}/", verify=verify) if response.status_code == 200: print(response.text) |
...
de unieke id van uw validatie-taak
en het aantal dataset bestanden dat is toegevoegd aan de validatie-taak.
...
Code Block | ||
---|---|---|
| ||
file_path = fr"...\ValidatietoolHyDAMO\Wiki\Datasetbestanden" datasets = ["DuikerSifonHevel.gpkg", "HydroObject.gpkg", "Regelmiddel.gpkg"] task_id = response_new_task.json()["id"] for dataset in datasets: params = {"file": dataset} files = {"file": open(f"{(os.path.join(file_path}\{dataset}",dataset), "rb")} #https://validatie-api.hydamo.nl/task/[task_id]/datasets response_upload_datasets = requests.post(f"{server}/task/{task_id}/datasets", files=files, params=params, headers=my_headers, verify=hydamo_cert) if response_upload_datasets.status_code == 201: data = response_upload_datasets.json() print("id: " + str(data["id"])) print("naam dataset: " dataset) print("aantal dataset bestanden: " + str(data["numberOfDatasets"])) |
...
Als er een validatie-taak beschikbaar is, kunt u bestand met validatieregels toevoegen aan deze validatie-taak. Meer informatie over de inhoud van het bestand met validatieregels vindt u hier (@@link@@).
Het bestand met validatieregels staat in een folder op het computersysteem waar naar verwezen kan worden (file_path). We maken gebruik van een versie van het bestand met alle validatieregels (zie hier voor de laatste versie). Om validatieregels te kunnen toevoegen aan de validatie-taak, is de taak-id nodig van de validatie-taak (zie voorgaande stappen). U maakt vervolgens eerst een dictionary params aan. Hierin wordt de naam van het bestand met validatieregels opgeslagen (aan het label ‘file’). Daarna maakt u ook een dictionary files aan. Hierin wordt het bestand met validatieregels zelf opgeslagen (via een commando ‘open' en het attribuut 'rb’; het bestand met validatieregels wordt als een binair bestand opgeslagen). Met een POST request naar de API op het endpoint van task/validationrules kunt u een bestand met validatieregels toevoegen aan de validatie-taak. U geeft hierbij de id van de validatie-taak mee (in de URL) en de dictionaries files en params, de Bearer token (opgeslagen in my_headers) en het (HTTPS) beveiligingscertificaat (verify=hydamo_cert). Als de HTML statuscode van de response gelijk is aan 201 (het post request geeft aan dat de aanpassing succesvol is doorgevoerd), kunnen verschillende gegevens (data) van de validatie-taak uit de response uitgelezen worden, waaronder:
de unieke id van uw validatie-taak
en of de validatie-taak validatieregels bevat.
Code Block | ||
---|---|---|
| ||
file_path = r"...ValidatietoolHyDAMO\Wiki\Validatieregels" validationrules = "validationrules_complete.json" params = {"file": dataset} files = {"file": open(os.path.join(file_path,validationrules)", "rb")} #http://validatie-api.hydamo.nl/task/[task_id]/validationrules response_upload_validationrules = requests.post(f"{server}/task/{task_id}/validationrules", files=files, params=params, headers=my_headers, verify=hydamo_cert) if response_upload_validationrules.status_code == 201: data = response_upload_validationrules.json() print("id: " + str(data["id"])) print("validatieregels aanwezig: " + str(data["validationRules"])) |
Het resultaat is:
id: 1495 (dit id is een voorbeeld)
validatieregels aanwezig: True
Controleer de status van een validatie-taak
Voordat een validatie-taak gestart kan worden moet aan een taak minimaal 1 dataset bestand en een bestand met validatieregels zijn toegevoegd. U kunt aan de hand van de status van een validatie-taak controleren of een validatie-taak gereed is voor validatie. De status is dan gelijk aan ready_to_validate.
U kunt de status van een validatie-taak op elk moment opvragen met een GET request naar de API op het endpoint van task, waarbij u de validatie-taak id (in de URL), de Bearer token (opgeslagen in my_headers) en het (HTTPS) beveiligingscertificaat (verify=hydamo_cert) meegeeft. ls de HTML statuscode van de response gelijk is aan 200 (het post request geeft aan dat de informayie succesvol is opgehaald), kunnen verschillende gegevens (data) van de validatie-taak uit de response uitgelezen worden, waaronder de status van de validatie-taak.
Code Block | ||
---|---|---|
| ||
#http://validatie-api.hydamo.nl/task/[task_id]/
response_get_task = requests.get(f"{server}/task/{task_id}", headers=my_headers, verify=hydamo_cert)
if response_get_task.status_code == 200:
data = response_get_task.json()
print(str(data["status"])) |
Het resultaat is:
status: ready_to_validate
Start een validatie-taak
U