BreedersDB

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

  1. Pakete installieren: Installiere die benötigten R-Pakete:

    install.packages(c("ghql", "jsonlite"))
  2. 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
  3. Skript ausführen: Führe das Skript in R oder RStudio aus.

Weitere Ressourcen