Mounting middleware for the Iron web framework.
fn send_hello(req: &mut Request) -> IronResult<Response> {
println!("Running send_hello handler, URL path: {:?}", req.url.path());
Ok(Response::with((StatusCode::OK, "Hello!")))
}
fn intercept(req: &mut Request) -> IronResult<Response> {
println!("Running intercept handler, URL path: {:?}", req.url.path());
Ok(Response::with((StatusCode::OK, "Blocked!")))
}
fn main() {
let mut mount = Mount::new();
mount.mount("/blocked/", intercept).mount("/", send_hello);
Iron::new(mount).http("localhost:3000");
}
Running the code above, the following HTTP requests would write the following line to the server process's stdout:
$ curl http://localhost:3000/
Running send_hello handler, URL path: [""]
$ curl http://localhost:3000/blocked/
Running intercept handler, URL path: [""]
$ curl http://localhost:3000/foo
Running send_hello handler, URL path: ["foo"]
$ curl http://localhost:3000/blocked/foo
Running intercept handler, URL path: ["foo"]
mount is a part of Iron's core bundle.
- Mount a handler on a sub-path, hiding the old path from that handler.
If you're using Cargo
to manage dependencies, just add mount to the toml:
[dependencies.mount]
git = "https://github.com/iron/mount.git"
Otherwise, cargo build
, and the rlib will be in your target
directory.
Along with the online documentation,
you can build a local copy with cargo doc
.
One of us (@reem, @zzmp,
@theptrk, @mcreinhard)
is usually on #iron
on the mozilla irc. Come say hi and ask any questions you might have.
We are also usually on #rust
and #rust-webdev
.