Skip to content

🟡 GET vs. POST

In der dataCycle API werden Inhalte gelesen – entweder über GET oder POST.

  • GET: Lesen über Query-Parameter
  • POST: Lesen über einen Request-Body

⚠️ Wichtig: In dieser API bedeutet POST nicht automatisch „schreiben“. POST wird hier ausschließlich für komplexe Leseabfragen verwendet.


Sobald mehrere Filter kombiniert werden, werden GET-URLs schnell:

  • unübersichtlich
  • fehleranfällig (Encoding, Sonderzeichen)
  • schlecht wartbar

Mit POST kannst du dieselbe Abfrage strukturiert als JSON im Body senden.


GET eignet sich besonders für:

  • einfache Abfragen
  • schnelle Tests
  • URLs, die man teilen oder bookmarken möchte
Terminal window
curl -s \
-H "Authorization: Bearer {TOKEN}" \
"{BASE_URL}/api/v4/endpoints/{ENDPOINT}"
Terminal window
curl -s \
-H "Authorization: Bearer {TOKEN}" \
"{BASE_URL}/api/v4/endpoints/{ENDPOINT}?page[size]=25&page[number]=1&filter[q]=museum"

POST ist sinnvoll, wenn:

  • viele Filter kombiniert werden
  • komplexe Werte (Listen, Bereiche) genutzt werden
  • Abfragen dokumentiert oder versioniert werden sollen
Terminal window
curl -s \
-H "Authorization: Bearer {TOKEN}" \
-H "Content-Type: application/json" \
-X POST \
"{BASE_URL}/api/v4/endpoints/{ENDPOINT}" \
-d '{
"filter": {
"q": "museum"
},
"page": {
"size": 25,
"number": 1
}
}'

➡️ Inhaltlich ist GET und POST identisch – der Unterschied liegt nur in der Darstellung der Parameter.


SituationEmpfehlung
kurzer TestGET
teilbare URLGET
viele FilterPOST
bessere LesbarkeitPOST
langfristige AbfragenPOST

  • ungültiges JSON
  • falsche Struktur im Request-Body
  • Token fehlt oder ist ungültig
  • keine Berechtigung für den Endpoint

Debug-Tipp (nur Statuscode anzeigen):

Terminal window
curl -s -o /dev/null -w "HTTP %{http_code}\n" \
-H "Authorization: Bearer {TOKEN}" \
-H "Content-Type: application/json" \
-X POST \
"{BASE_URL}/api/v4/endpoints/{ENDPOINT}" \
-d '{}'

  • Paging
  • Suche & Volltext
  • Filtern nach Klassifizierungen
© dataCycle ✨