2010-12-31 6 views
0

Ich baue eine RESTful API mit einem Ruby-Server und einer MongoDB-Datenbank. Die Datenbank speichert Objekte so wie sie sind und behält dabei ihre natürlichen Datentypen bei (zumindest die, die sie unterstützt).Gibt es eine Datentypisierung für die Parameter in HTTP POST?

Im Moment verwende ich HTTP GET, um Params an die API zu übergeben, und verständlicherweise wird alles in meiner Datenbank als String gespeichert (weil das der Ruby-Code sieht, wenn er auf den params[] Hash zugreift). Nach der Bereitstellung wird die API ausschließlich HTTP-POST verwenden, daher ist meine Frage, ob es möglich ist, die Datentypen, die über POST gesendet werden, für jeden Parameter individuell anzugeben (sagen wir eine "uid", die eine Ganzzahl und einen "Namen" ist) ist eine Zeichenkette) oder muss ich sie in Ruby umwandeln, bevor ich sie an meine Datenbank übergebe?

Wenn ich sie umsetzen muss, gibt es irgendwelche Probleme damit?

+0

Wo möchten Sie die Typen erzwingen? Auf HTTP-Ebene? –

Antwort

1

Nein, das ist nicht möglich.

Post-Variablen sind nur String-Schlüsselwertpaare.

Sie könnten jedoch Ihre eigene höhere Logik implementieren.

Zum Beispiel ist es üblich, den Namen ein Suffix zu geben. Zum Beispiel wird alles, was mit _i endet, als Integer usw. geparst.

Welchen Nutzen würde es bringen, um die Typen zu erhalten? Oder besser gefragt. Wie gibst du sie aus? Ist es nur für die Lagerung?

Dann sollte es kein Problem sein, die Strings in richtige Typen zu konvertieren, wenn dies Ihrer Anwendung zugute kommt und sie vor der Auslieferung in Strings umgewandelt werden.

+0

Danke! Ich werde sie dann in Ruby werfen. Gibt es etwas, auf das ich beim Casting achten muss? Alles sicherheitsrelevant? – lms

+0

Nein, das einzige, worauf Sie achten müssen, ist, dass Sie die Daten nicht durcheinander bringen. zum Beispiel wird "0001" als Integer geworfen und bei der Konvertierung werden die führenden Nullen verloren ... –

Verwandte Themen