API mit R verwenden
⚠️ Wichtig: Lies zuerst die API Einführung, bevor du die Beispiele hier ausprobierst.
Inhalt
Kurzes Beispiel
Hier ein kurzes Beispiel, wie du die BreedersDB-API mit R verwenden kannst:
library(ghql)
library(jsonlite)
# Konfiguration
endpoint <- "https://deine-instanz.breedersdb.com/api/hasura/v1/graphql"
token <- "dein-token-hier"
# GraphQL-Client erstellen
conn <- GraphqlClient$new(
url = endpoint,
headers = list(Authorization = paste0("Bearer ", token))
)
# Abfrage erstellen
qry <- Query$new()
qry$query('MeQuery', '{
plants(limit: 100, offset: 0, order_by: [{ id: asc }]) {
id
label_id
plant_group_name
plant_row {
name
orchard {
name
}
}
}
}')
# Abfrage ausführen
result <- fromJSON(
conn$exec(qry$queries$MeQuery)
)
# Ergebnis anzeigen
print(result)
Vollständiges ausführbares Skript
Das folgende Skript zeigt, wie du Pflanzendaten von der BreedersDB GraphQL-API abrufst:
# ===========================================
# Beispiel: Pflanzendaten von der GraphQL-API abrufen
# ===========================================
# Benötigte Bibliotheken laden
# 'ghql' für GraphQL-Anfragen
# 'jsonlite' für die Verarbeitung von JSON-Antworten
library(ghql)
library(jsonlite)
# ---------------------------
# 1. Konfiguration
# ---------------------------
# GraphQL-Endpoint (API-URL)
endpoint <- "https://deine-instanz.breedersdb.com/api/hasura/v1/graphql"
# Dein persönliches API-Token zur Authentifizierung
token <- "dein-token-hier"
# ---------------------------
# 2. GraphQL-Abfrage
# ---------------------------
# Die Abfrage bleibt unverändert
# Diese Abfrage ruft Pflanzen mit Details zu ihrer Gruppe, Zeile und Standort ab
# !!! Der Name der Abfrage (hier 'RQuery') brauchst du weiter unten wieder. Du
# !!! kannst ihn anpassen, musst aber unten jeweils den gleichen verwenden.
query <- '
query RQuery($limit: Int!, $offset: Int!) {
plants(limit: $limit, offset: $offset, order_by: [{ id: asc }]) {
id
label_id
plant_group_name
plant_row {
name
orchard {
name
}
}
}
}'
# Abfrage-Variablen: Passe an, wie viele Datensätze abgerufen werden sollen
# und von wo
variables <- list(
limit = 100, # Anzahl der abzurufenden Pflanzen
offset = 0 # Pagination-Offset (0 = beginne beim ersten Datensatz)
)
# ---------------------------
# 3. GraphQL-Client einrichten
# ---------------------------
# Erstellt ein neues GraphQL-Client-Objekt mit Endpoint und
# Autorisierungs-Header
conn <- GraphqlClient$new(
url = endpoint,
headers = list(
Authorization = paste0("Bearer ", token)
)
)
# Erstellt ein Query-Objekt, um die GraphQL-Abfrage zu speichern
# !!! Der Name der Abfrage ('RQuery') muss mit dem Namen in der
# !!! Abfrage (`query` Variable) übereinstimmen
qry <- Query$new()
qry$query('RQuery', query)
# ---------------------------
# 4. Abfrage ausführen
# ---------------------------
# Führt die Abfrage mit den bereitgestellten Variablen aus
# 'exec' sendet die Anfrage an die API
# 'fromJSON(flatten = TRUE)' konvertiert die JSON-Antwort in ein
# R data.frame
# !!! Der Name der Abfrage ('RQuery') muss mit dem Namen in der
# !!! Abfrage (`query` Variable) übereinstimmen
result <- conn$exec(qry$queries$RQuery, variables) |>
fromJSON(flatten = TRUE)
# ---------------------------
# 5. Ergebnis untersuchen
# ---------------------------
# Das rohe Ergebnis ist eine verschachtelte Liste
str(result) # Struktur des Ergebnisses exemplarisch anzeigen
# Pflanzendaten extrahieren
plants_df <- result$data$plants
# Die ersten Zeilen anzeigen
head(plants_df)
# Spaltennamen anzeigen
colnames(plants_df)
Verwendung des Skripts
-
Pakete installieren: Installiere die benötigten R-Pakete:
install.packages(c("ghql", "jsonlite")) -
Konfiguration anpassen:
- Ersetze
"https://deine-instanz.breedersdb.com/api/hasura/v1/graphql"mit dem Endpoint deiner BreedersDB-Instanz (z.B."https://beta.breedersdb.com/api/hasura/v1/graphql") - Ersetze das Token mit deinem Persönlichen Zugangs-Token
- Ersetze
-
Skript ausführen: Führe das Skript in R oder RStudio aus.
Weitere Ressourcen
- GraphQL Explorer: Nutze den interaktiven Explorer, um verfügbare Abfragen zu erkunden
- GraphQL-Dokumentation: Die GraphQL-Spezifikation findest du unter graphql.org
- R-Pakete:
ghql: GraphQL-Client-Bibliothek für R (siehe ropensci.org/blog/2020/12/08/accessing-graphql-in-r/)jsonlite: Für JSON-Verarbeitung