REST (Representational State Transfer)
Ein Architekturstil für Web-APIs, der auf HTTP-Methoden und Ressourcen basiert – der De-facto-Standard für die meisten Web-Schnittstellen und KI-APIs.
Eine Abfragesprache für APIs, die es Clients ermöglicht, genau die Daten anzufordern, die sie brauchen – nicht mehr und nicht weniger.
GraphQL ist eine Alternative zu REST, bei der der Client genau bestimmt, welche Daten er braucht. Statt mehrerer Endpunkte gibt es einen einzigen – der Client formuliert eine Abfrage, die exakt die benötigten Felder spezifiziert.
Für KI-Anwendungen ist GraphQL besonders relevant, wenn Frontends dynamisch unterschiedliche Datenkombinationen benötigen – etwa ein Dashboard, das je nach Nutzerrolle andere Modell-Metriken anzeigt. Statt fünf REST-Endpunkte zu bauen, reicht eine flexible GraphQL-API. Der Nachteil: Caching ist komplexer als bei REST, und schlecht formulierte Queries können zu Performance-Problemen führen. GraphQL lohnt sich besonders bei komplexen, datenintensiven Frontends mit vielen verschiedenen Ansichten – für einfache APIs ist REST oft die bessere Wahl.ies können die Datenbank überlasten.
REST vs. GraphQL:
| Aspekt | REST | GraphQL |
|---|---|---|
| Endpunkte | Viele (/users, /posts, /comments) | Einer (/graphql) |
| Datenumfang | Server bestimmt | Client bestimmt |
| Over-Fetching | Häufig | Nie |
| Typisierung | Optional (OpenAPI) | Eingebaut (Schema) |
Beispiel-Query:
query {
user(id: "123") {
name
email
posts(last: 5) {
title
createdAt
}
}
}
type User {
id: ID!
name: String!
email: String!
posts: [Post!]!
}
type Query {
user(id: ID!): User
users(limit: Int): [User!]!
}
type Mutation {
createUser(name: String!, email: String!): User!
}
GraphQL ist wie ein Buffet, bei dem du genau sagst, was du auf deinem Teller haben willst – statt ein festes Menü (REST) zu bekommen, stellst du dir dein Essen selbst zusammen.
Client bestimmt exakt, welche Daten zurückgegeben werden (kein Over-/Under-Fetching)
Ein einziger Endpunkt statt vieler REST-Endpunkte
Stark typisiertes Schema definiert alle verfügbaren Daten und Operationen
Komplexe Frontends
Single Page Applications, die verschiedene Daten aus vielen Quellen brauchen
Mobile Apps
Minimaler Datentransfer durch gezielte Abfragen (wichtig bei mobilen Netzen)
API-Gateways
Ein GraphQL-Layer vor mehreren Microservices als einheitliche Schnittstelle
GraphQL lohnt sich bei komplexen Datenmodellen mit vielen Relationen, wenn verschiedene Clients unterschiedliche Daten brauchen oder wenn Over-Fetching ein Performance-Problem ist. Für einfache CRUD-APIs ist REST oft ausreichend.
Kaum. Die meisten KI-APIs (OpenAI, Anthropic) nutzen REST. GraphQL ist eher im Anwendungs-Backend verbreitet. GitHub nutzt GraphQL für seine API v4.
Mit GraphQL können Sie in einer einzigen Anfrage mehrere Ressourcen abfragen, indem Sie die Struktur der Anfrage entsprechend definieren. Sie können verschiedene Typen und Felder in einer einzigen Abfrage kombinieren, was die Effizienz erhöht.
GraphQL ermöglicht es Clients, genau die Daten abzufragen, die sie benötigen, und reduziert so die Menge an überflüssigen Daten, die übertragen werden. Außerdem können Clients die Struktur der Antwort anpassen, was die Flexibilität erhöht.