{"meta":{"title":"Vergleich der REST-API und der GraphQL-API von GitHub","intro":"Sammle Informationen über die APIs von GitHub, um deine GitHub-Erfahrung anzupassen und zu erweitern.","product":"REST-API","breadcrumbs":[{"href":"/de/rest","title":"REST-API"},{"href":"/de/rest/about-the-rest-api","title":"Über die REST-API"},{"href":"/de/rest/about-the-rest-api/comparing-githubs-rest-api-and-graphql-api","title":"Vergleich der APIs von GitHub"}],"documentType":"article"},"body":"# Vergleich der REST-API und der GraphQL-API von GitHub\n\nSammle Informationen über die APIs von GitHub, um deine GitHub-Erfahrung anzupassen und zu erweitern.\n\n## Informationen zu den APIs von GitHub\n\nGitHub stellt zwei APIs bereit: eine REST-API und eine GraphQL-API. Du kannst mit beiden APIs interagieren, indem du GitHub CLI, curl, die offiziellen Octokit-Bibliotheken und Bibliotheken von Drittanbietern verwendest. Gelegentlich kann ein Feature in einer API unterstützt werden, aber nicht für die andere.\n\nDu solltest die API verwenden, die deinen Anforderungen am besten entspricht und mit der du am besten vertraut bist. Du musst nicht einer API gegenüber der anderen den Vorzug geben. Mit Knoten-IDs kannst du zwischen der REST-API und der GraphQL-API wechseln. Weitere Informationen finden Sie unter [Verwenden globaler Knoten-IDs](/de/graphql/guides/using-global-node-ids).\n\nIn diesem Artikel werden die jeweiligen Vorteile der beiden APIs erläutert. Weitere Informationen zur GraphQL-API findest du unter [Informationen zur GraphQL-API](/de/graphql/overview/about-the-graphql-api). Weitere Informationen zur REST-API findest du unter [Informationen zur REST-API](/de/rest/about-the-rest-api/about-the-rest-api).\n\n## Auswahl der GraphQL-API\n\nVon der GraphQL-API werden genau die Daten zurückgegeben, die du anforderst. Außerdem werden die Daten von GraphQL auch in einer vordefinierten Struktur basierend auf deiner Anforderung zurückgegeben. Im Gegensatz dazu werden von der REST-API mehr Daten zurückgegeben, als du angefordert hast; außerdem werden die Daten in einer vordefinierten Struktur zurückgegeben. Du kannst auch die Entsprechung mehrerer REST-API-Anforderungen in einer einzelnen GraphQL-Anforderung ausführen. Die Möglichkeit, weniger Anforderungen auszuführen und weniger Daten abzurufen, macht GraphQL für Entwickler mobiler Anwendungen attraktiv.\n\nWenn du beispielsweise die GitHub-Anmeldung von zehn deiner Follower und die Anmeldung von zehn Followern von jedem deiner Follower erhalten möchtest, kannst du eine einzelne Anforderung wie die folgende senden:\n\n```graphql\n{\n  viewer {\n    followers(first: 10) {\n      nodes {\n        login\n        followers(first: 10) {\n          nodes {\n            login\n          }\n        }\n      }\n    }\n  }\n}\n```\n\nDie Antwort ist ein JSON-Objekt, das der Struktur der Anforderung folgt.\n\nIm Gegensatz dazu musst du zunächst eine Anforderung an `GET /user/followers` senden, um dieselben Informationen von der REST-API zu erhalten. Die API gibt die Anmeldung jedes Followers zusammen mit anderen Daten über die Follower zurück, die du nicht benötigst. Dann müsstest du für jeden Follower eine Anforderung an `GET /users/{username}/followers` ausführen. Insgesamt müsstest du 11 Anforderungen ausführen, um dieselben Informationen zu erhalten, die du aus einer einzelnen GraphQL-Anforderung erhalten könntest, und du würdest überschüssige Daten erhalten.\n\n## Auswählen der REST-API\n\nDa es REST-APIs schon länger gibt als GraphQL-APIs, sind einige Entwickler mit der REST-API vertrauter. Da von REST-APIs HTTP-Standardverben und -konzepte verwendet werden, sind viele Entwickler bereits mit den grundlegenden Konzepten für die Verwendung der REST-API vertraut.\n\nBeispiel: Zum Erstellen eines Issue im `octocat/Spoon-Knife`-Repository müsstest du eine Anforderung mit einem JSON-Anforderungstext an `POST /repos/octocat/Spoon-Knife/issues` senden:\n\n```json\n{\n  \"title\": \"Bug with feature X\",\n  \"body\": \"If you do A, then B happens\"\n}\n```\n\nWenn du dagegen ein Issue mit der GraphQL-API erstellen würdest, müsstest du die Knoten-ID des `octocat/Spoon-Knife`-Repositorys abrufen und dann eine Anforderung wie die folgende senden:\n\n```graphql\nmutation {\n  createIssue(\n    input: {\n      repositoryId: \"MDEwOlJlcG9zaXRvcnkxMzAwMTky\"\n      title: \"Bug with feature X\"\n      body: \"If you do A, then B happens\"}\n  ) {\n    issue {\n      number\n      url\n    }\n  }\n}\n```"}