Alex.B: Symfony 5 Routing mit Defaults

Beitrag lesen

Hallo Leute,

eine REST App nimmt ein PUT-Request entgegen. Dieser beinhaltet einen Unix-Timestamp.

Nun möchte ich diesen Parameter gerne optional machen. Wird ein Timestamp übergeben, soll dieser anhand der hinterlegten Regeln validiert werden. Wird kein Timestamp übergeben, soll die App eins erzeugen.

# testing
"PUT /tracking/123456789" erzeugt einen Fehler da nur 9 Zeichen
"PUT /tracking/12345678901234" erzeugt einen Fehler da nur >13 Zeichen
"PUT /tracking/1234567890" klappt

Nun soll folgender Request auch funktionieren
"PUT /tracking/"

In diesem Fall sollte Symfony den "default timestamp" mit dem Wert "0" nehmen. Klappt aber nicht. Es gibt eine Fehlermeldung "No route found for "PUT /tracking/"

Hoffentlich könnt ihr mir helfen, eigentlich ganz easy^^

# routing
api_add_entry:
    path: /tracking/{!timestamp}
    controller: App\Controller\MainController::addEntry
    defaults:
        timestamp: 0
    requirements:
        timestamp: '\d+'
    methods: [PUT]
# validation
App\Usecase\AddEntity\AddEntityRequest:
  properties:
    timestamp:
      - Length:
          min: 10
          max: 13