Hallo pl,
Lange überlegt.
Okay, das ist schön. Und wo genau ist nun deine Frage?
Welche Alternativen zu
CGI.pm
benutzt Ihr denn?
Gar keine. Moderne Frameworks[tm] handhaben das anders, dort kommen die notwendigen Parameter mit in die Funktionssignatur. Im funktionalen Umfeld lässt das so geniale Dinge wie dies hier zu:
defmodule FooWeb.ExampleController do
def index(conn, %{"search_term" => term}) do
examples = Foo.Example.search_examples(term)
render(conn, "index.html", examples: examples)
end
def index(conn, _params) do
results = Foo.Example.list_examples()
render(conn, "index.html", examples: examples)
end
end
Das ist ein Beispiel für Phoenix. Zwei unterschiedliche Code-Pfade basierend auf den Parametern, umgesetzt mit pattern matching. ♥️
In Rust mit Rocket würde man das so oder so ähnlich umsetzen:
#[get("/hello?<name>")]
fn hello_named(name: &RawStr) -> String {
format!("Hello, {}!", name.as_str())
}
#[get("/hello")]
fn hello() -> String {
format!("Hello, world!")
}
Nicht ganz so schön wie mit Phoenix, aber auch toll ♥️
LG,
CK