Ich entwickle eine API, die die drei wichtigsten Datentypen als Werte für die Abfrage von String-Parametern akzeptiert: boolean
, string
& amp; numeric
( integer
oder float
). Standardmäßig wird alles als String abgerufen (ich glaube nicht, dass es einen Weg dafür gibt), aber die Parameter sind mit einem Typ konfiguriert, so dass ich sie in den richtigen Typ umwandle.
Ich muss jetzt anfangen, NULL als Wert für alle drei Datentypen zu akzeptieren, aber ich bin mir nicht sicher, was der beste Weg ist.
Einige Leute scheinen keinen Wert als NULL zu akzeptieren ( ?param
, ohne =
), aber das funktioniert nicht ganz für mich:
true
für booleans, obwohl das geändert werden könnte. string
ist. Also, hier sind die einzigen zwei Möglichkeiten, die ich sehen kann, von denen keine für mich arbeiten:
"NULL"
oder "~"
. Das funktioniert für booleans & amp; Zahlen, aber nicht für Strings, da dies der gewünschte String-Wert sein könnte. Scheint so, als ob die Verwendung einer Konstanten meine einzige Wahl wäre, und um Probleme zu vermeiden, kann diese Konstante von Strings verboten werden. Aber ist das wirklich die einzig gangbare Option? Ich wünschte, es gäbe einen besseren Weg. : (
Bearbeiten : Ich hatte gerade eine andere Idee, die funktionieren könnte, aber ich bin mir nicht sicher, wie es wahrgenommen werden würde. Ich denke, dass es definitiv Standards bricht, und viele Leute würden es wahrscheinlich nicht mögen, aber würde mein Problem besser beheben als jede andere Lösung bisher. Im Grunde wäre die Idee, JSON zu verwenden, das native Datentypen unterstützt. Ich habe dieses Problem nicht mit POST-Anfragen, weil sie JSON verwenden.
Die Idee wäre also, JSON in die Abfragezeichenfolge aufzunehmen, was im Grunde eine alternative Abfragezeichenfolge erlaubt, die die Standard-HTTP-Zeichenfolge überschreiben würde. So etwas wie: ?_json={"foo":"bar","param":null}
anstelle von ?foo=bar¶m=~
. Oder vielleicht sogar die Abfragezeichenfolge vollständig übernehmen: ?{"foo":"bar","param":null}
.