Was macht api-patterns?
Prinzipien des API-Designs und Entscheidungsfindung. Auswahl zwischen REST, GraphQL und tRPC, Antwortformate, Versionierung, Paginierung.
Überblick
Diese Fähigkeit unterstützt dich bei der Auswahl des richtigen API-Protokolls für dein Projekt: REST, GraphQL und tRPC werden anhand von Kriterien wie Datenkomplexität, Caching-Anforderungen, Echtzeit-Features und Tooling verglichen.
Entscheidungsmatrix
| Kriterium | REST | GraphQL | tRPC |
|---|---|---|---|
| Einfachheit | Hoch | Mittel | Hoch |
| Typensicherheit | Gering (OpenAPI optional) | Hoch | Sehr hoch |
| Caching | Exzellent (HTTP-Caching) | Schwach (eigenes Caching nötig) | Kein HTTP-Cache |
| Echtzeit | Lange Polling/SSE | Subscriptions | Subscriptions |
| Übermäßiges/Unterfüllen | Manuell vermeiden | Lösung durch @defer/@stream | Kein Problem |
Antwortformate
- JSON: Standard, leichtgewichtig.
- XML: Altsysteme, SOAP.
- YAML/Protobuf: Konfigurationen, gRPC.
Versionierung
- URI-basiert:
GET /api/v1/users– einfach, aber starr. - Header-basiert:
Accept-Version: 2.0– sauberer, aber weniger sichtbar. - GraphQL: Schema-basiert, Deprecation-Annotationen.
- tRPC: Keine Versionierung empfohlen; Mutationen statt neuer Endpunkte.
Paginierung
- Cursor-basiert:
?cursor=abc123– robust bei Änderungen. - Seitenzahl-basiert:
?page=2&limit=20– einfach, aber inkonsistent bei Shifts. - Offset-basiert:
?offset=40&limit=20– ähnlich wie Seitenzahl.
Empfehlung: Cursor-basiert für große oder dynamische Datensets.
Nutzung
Rufe diese Fähigkeit auf, wenn du eine neue API entwirfst, ein Protokoll wählst oder bestehende Muster dokumentierst. Gib zusätzliche Kontext (Projekttyp, Teamgröße, Skalierungsanforderungen) für maßgeschneiderte Vorschläge.