hi
Was ist mit Parametern aus STDIN?
Die gibt es nicht. Das ist kein CGI.
Was du vermutlich meinst: was ist mit Parametern aus POST-Requests?
Parameter kann es unabhängig von der Requestmethode geben. Sie können an den URL angehängt sein und natürlich auch über Requestheader gesendet werden. Ob Daten aus STDIN zu lesen sind, darüber entscheidet die Angabe im Requestheader Content-Length.
CGI/1.1 beschreibt nur, wie diese Parameter nachgelagerten Prozessen zur Verfügung gestellt werden. Der Common Gateway ist STDIN/STDOUT.
Bei Phoenix gibt es da keinen Unterschied, das funktioniert genau wie bei GET.
Bei Rocket: im Prinzip genau so:
#[post("/", data = "<input>")] fn new(input: T) -> String { ... }
Wobei
T
hier denFormData
-Trait implementieren muss. Aber für Strukturen haben sie noch ein paar tolle Sachen eingebaut:#[derive(FromForm)] struct Task { complete: bool, description: String, } #[post("/todo", data = "<task>")] fn new(task: Form<Task>) -> String { ... }
Übrigens funktioniert das sowohl bei Rocket als auch bei Phoenix auch mit JSON im Body.
Genau das ist die Transparenz die ich über mein Schichtenmodell erreiche. Damit werden die Enctypes untereinander austauschbar, ohne daß Anwendungscode geändert werden muss. Also ich kann z.B. den Enctype multipart/form-data
gegen application/json
austauschen oder den Enctype gar nicht definieren, dann gilt der Default.
Meinen Code organisiere ich übrigens auch in Traits, da ist mit Perl5 kein Thema.
MfG