[−][src]Macro rweb::path
Convenient way to chain multiple path filters together.
Any number of either type identifiers or string expressions can be passed,
each separated by a forward slash (/
). Strings will be used to match
path segments exactly, and type identifiers are used just like
param
filters.
Example
use warp::Filter; // Match `/sum/:a/:b` let route = warp::path!("sum" / u32 / u32) .map(|a, b| { format!("{} + {} = {}", a, b, a + b) });
The equivalent filter chain without using the path!
macro looks this:
use warp::Filter; let route = warp::path("sum") .and(warp::path::param::<u32>()) .and(warp::path::param::<u32>()) .and(warp::path::end()) .map(|a, b| { format!("{} + {} = {}", a, b, a + b) });
Path Prefixes
The path!
macro automatically assumes the path should include an end()
filter. To build up a path filter prefix, such that the end()
isn't
included, use the / ..
syntax.
use warp::Filter; let prefix = warp::path!("math" / "sum" / ..); let sum = warp::path!(u32 / u32) .map(|a, b| { format!("{} + {} = {}", a, b, a + b) }); let help = warp::path::end() .map(|| "This API returns the sum of two u32's"); let api = prefix.and(sum.or(help));