Sparse Fieldsets (?fields=) fuer alle API-Endpunkte implementieren #257

Open
opened 2026-07-06 20:42:16 +02:00 by niboer · 0 comments
Owner

Beschreibung

Das API-Design (03-api-design.md) sieht Sparse Fieldsets vor:
GET /api/v1/events/{eventId}?fields=title,eventDate

Dieses Pattern wurde nie im Backend implementiert — kein Endpunkt unterstuetzt ?fields=. Alle Endpunkte liefern immer das vollstaendige Schema aus.

Betroffene Endpunkte

  • /api/v1/persons
  • /api/v1/persons/{id}
  • /api/v1/groups
  • /api/v1/groups/{id}
  • /api/v1/events
  • /api/v1/events/{id}
  • und alle Sub-Ressourcen-Endpunkte

Umsetzungsvorschlag

  1. ?fields=title,eventDate parsed als Set<string> (analog zu parsePersonInclude)
  2. Prisma-Query verwendet select statt include wenn ?fields= gesetzt ist
  3. Entity-ID (personId, eventId, ...) wird automatisch ergaenzt
  4. 400 bei unbekannten Feldnamen

Prioritaet

Niedrig — rein opt. Optimierung fuer Bandbreite/Performance. Die API funktioniert auch ohne.

### Beschreibung Das API-Design (03-api-design.md) sieht Sparse Fieldsets vor: `GET /api/v1/events/{eventId}?fields=title,eventDate` Dieses Pattern wurde **nie im Backend implementiert** — kein Endpunkt unterstuetzt `?fields=`. Alle Endpunkte liefern immer das vollstaendige Schema aus. ### Betroffene Endpunkte - `/api/v1/persons` - `/api/v1/persons/{id}` - `/api/v1/groups` - `/api/v1/groups/{id}` - `/api/v1/events` - `/api/v1/events/{id}` - und alle Sub-Ressourcen-Endpunkte ### Umsetzungsvorschlag 1. `?fields=title,eventDate` parsed als `Set<string>` (analog zu `parsePersonInclude`) 2. Prisma-Query verwendet `select` statt `include` wenn `?fields=` gesetzt ist 3. Entity-ID (`personId`, `eventId`, ...) wird automatisch ergaenzt 4. 400 bei unbekannten Feldnamen ### Prioritaet Niedrig — rein opt. Optimierung fuer Bandbreite/Performance. Die API funktioniert auch ohne.
Sign in to join this conversation.
No description provided.