Här finns ett litet API definierat som hämtar data från lite olika andra Web API:er mm:
Öppnar man denna fil i RStudio dyker en knapp upp som heter “Run API”. Har man då alla R paketberoenden så startar API:et lokalt och man kan testa att använda det.
Om man vill deploya detta som en container med docker
så behöver man paketera det. Då behövs ytterligare några filer:
ett startscript
en Makefile som använd för att bygga, starta och testa i olika steg (eller man kan göra alla genom att ange make
enbart)
en Dockerfile - men varför behövs den? Varför används inte kthb/kontarion:latest
direkt?
en docker-compose.yml-fil - som anger en minimal composition för att köra API:et
Här är lite andra länkar och resurser som man kan titta på om man är intresserad av att att konsumera och producera API:er mha R….
Dessa paket använder alla en liknande approach - efter installation får man tillgång till några funktioner som gör jobbet med att hämta data över http - i dessa fall läsningar och paging (hämta flera chunks/pages och slå ihop till en “batch”).
För den sista dvs kthapi kan man göra autenticerade anrop om man har en api-nyckel som ITA delar ut som tillåter read-only access till Discovery API:et för ABM-appen (dvs som ska möjliggöra att hämta organisatorisk tillhörighet för användare på KTH - jag har inte hunnit titta på detta ännu). Nyckel-baserat åtkomst är ännu inte implementerat i “kthapi” paketet.
De andra två är öppna API:er och kräver ingen token/api-nyckel e dyl.
Bra resurser när man gör API wrappers:
Här är en jättebra tutorial ang API:er implementerade i R mha paketet Plumber:
En bra intro till att göra Plumber API:er finns här:
PS. Man behöver förresten inte ens använda Plumber med annoteringar om man paketerar sin R-kod som ett paket och sedan använder OpenCPU men då får man ett API i RPC-stil och inte ett REST-API.
APIer kan leverera data men också annat (dashboards, csv-filer mm).
Här är ett exempel från bibliomatrix-paketet:
https://github.com/KTH-Library/bibliomatrix/blob/master/inst/plumber/abm/plumber.R