OpenApi mit boolschen Query-Paramtern



  • Hallo Miteinander,

    beim letzten Update meiner openapi.json viel mir auf, dass einige neue Schnittstellen dazugekommen sind. Cool! Macht weiter so 🙂

    Ich bin jedoch gerade bei boolschen Query-Parametern herausgefordert. Z.B. bei der /persons/ Schnittstelle. Bei der Verwendung des Parameters "is_archived" mit dem Wert (bool) TRUE, macht Swagger kräftig Ärger.

    Ich bekomme vom ChurchTools-Webserver die Fehlermeldung zurück:

    {"message":"There are validation errors","messageKey":"validation.error","translatedMessage":"Die eingegebenen Daten waren nicht korrekt.","args":[],"errors":[{"fieldId":"is_archived","message":"Eingabe muss TRUE oder FALSE sein.","messageKey":"validation.boolean","args":{"name":"is_archived","value":"0"}}]}
    

    Daraus schieße ich, dass Swagger den übermittelten boolschen Query-Parameter umandelt in 0 (für false) oder 1 (für true) und so übermittelt. Der ChurchTools-Webserver dies aber nicht als validen Wert akzeptiert.
    Meiner Meinung nach müssten 0 und 1 ebenfalls vom ChurchTools-Server als valide Werte akzeptiert und verwertet werden. Jedenfalls geht Swagger davon aus.

    Danke für eine kurze Rückmeldung. ☀


  • ChurchToolsMitarbeiter

    Jo hier ist ein Bug drin. Den fixe ich für v3.60.

    Es sollten folgende Wert funktionieren:

    // Truthy Werte
    (int) 1
    (string) 1
    (bool) true
    (string) "true"
    
    // Falsy Werte
    (int) 0
    (string) 0
    (bool) false
    (string) "false"
    

    Probelm hier war, dass alle Werte, die als Query Parameter übergeben werden immer als String übermittelt werden. Und den Case (string) 1 wurde nicht beachtet.

    Wenn du aber true übergibst, funktioniert es ja. Damit kannst du ja erstmal arbeiten.



  • Danke für den Bugfix 👍

    Leider konnte ich kein "true" ohne Überschreiben der Openapi übermitteln. Denn alle Parameter werden vorher von Swagger geparsed ... aber jetzt müsste es klappen. Danke!


Log in to reply