Skip to content

API-Responses werden nicht korrekt gegen JSON Schema validiert #2033

@nelarsen

Description

@nelarsen

Nach dem Release von Commit 9ffdf0407be (phpstan: wraps stdClass into WP_REST_Response) konnte mein Datenkonsument (die Karte auf teilrad.net) nicht mehr mit den API-Daten arbeiten. Die Ausgabestruktur hatte sich unbeabsichtigt geändert.

Erst WP_DEBUG=true schaltet die Validierung ein. Aber die Validierung hat einige Fehler und hat vermutlich nie richtig funktioniert (?).

Probleme

  1. Falsche Datentypen
    Seit dem oben genannten Commit werden Arrays von WP_REST_Response-Objekten validiert. Es schleichen sich unbeabsichtig "Status: 200" etc. in Feature-Items. Der Validator erwartet aber einfache Datenstrukturen (stdClass/Arrays).

  2. Nicht umgesetztes Pflichtfeld
    Im Items-Schema ist ownerId als required definiert, wird aber nirgends gesetzt – eine erfolgreiche Validierung ist damit ausgeschlossen.

  3. Schema-$ref werden nicht aufgelöst
    Schemas verweisen per $ref auf andere Dateien (z.B. items → locations). Der Opis-Validator fetcht diese URLs nicht, die Validierung schlägt fehl oder ist unvollständig.

  4. Inkonsistente Validierung
    Nicht alle Routen und Handler (get_item vs. get_items) validieren; die Logik ist verstreut und uneinheitlich.

Betroffene REST-Endpoints

  • /wp-json/commonsbooking/v1/locations
  • /wp-json/commonsbooking/v1/items
  • /wp-json/commonsbooking/v1/availability

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriage

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions