🎯 Definicja

GraphQL Request Body to struktura JSON, którą wysyłasz do serwera API (metodą POST), aby otrzymać dane. W przeciwieństwie do REST, gdzie parametry są często w URL, w GraphQL wszystko (zapytanie, zmienne, nazwa operacji) siedzi w body.

🔑 Kluczowe punkty

  • Standardowe pola:
    • query: Tutaj wklejasz zapytanie (String).
    • variables: Obiekt JSON z wartościami dla zmiennych (np. $gid).
    • operationName: Nazwa operacji (przydatne przy debugowaniu).
  • Zmienne: Zawsze używaj variables, zamiast sklejać stringi (zapobiega to Injection i błędom składni).

📚 Szczegółowe wyjaśnienie

Prawidłowy Request Body wygląda tak:

{
  "operationName": "GetTable",
  "variables": {
    "id": "123-abc"
  },
  "query": "query GetTable($id: GID!) { catalogItem(gid: $id) { name } }"
}

Serwer najpierw sprawdza query, potem podstawia variables w miejsca oznaczone $, a na końcu wykonuje logikę.

💡 Przykład zastosowania

Integracja Pythona z Ataccama ONE:

import requests
 
query = """
query GetProjects {
  monitoringProjects {
    edges { node { name } }
  }
}
"""
 
response = requests.post(
    url="https://one.ataccama.com/graphql",
    json={"query": query},  # Biblioteka requests sama zrobi z tego JSON body
    headers={"Authorization": "Bearer ..."}
)

📌 Źródła

  • GraphQL.org - Serving over HTTP.

👽 Brudnopis

  • Najczęstszy błąd: Zapominanie o cudzysłowach wewnątrz stringa query (np. query: "{ ... }" jest źle, jeśli w środku nie uciekniesz znaków ").