Designed to be wasm
compatible, simple and small.
```rust extern crate alloc; use alloc::borrow::Cow;
use mimeograph_router::*;
/// A request could be an http
crate Request, or a CloudFlare
/// worker Request. Here is a very simple request:
pub struct Request {
path: String,
method: String,
}
/// To use the router, implement mimeograph_request::Request
/// for the Request type that you are working with.
impl mimeographrequest::Request for Request {
fn path(&self) -> Cow<', str> {
Cow::Borrowed(&self.path)
}
fn method(&self) -> Cow<'_, str> {
Cow::Borrowed(&self.method)
}
}
/// A dummy Response type pub struct Response { status: u32, body: String, }
type Result
fn get_hello(request: Request) -> Result
fn get_greeting(request: Request, name: &str) -> Result
// Wildcard segment
fn foobazname(request: Request, name: &str) -> Result
// Glob, matches everything after /page/, ie: /page/hello/world
fn page_glob(request: Request) -> Result
/// All verbs are supported: /// get, put, post, delete, head, patch, options
fn post_image(request: Request) -> Result
/// The entrypoint for handling a request pub fn handlerequest(request: Request) -> Response { // router![] creates a closure that iterates through // the handlers until one is matched, then it returns // the matched handler's response let routes = routes![gethello, getgreeting, foobazname, pageglob];
match router(request, routes) {
// Matched a route
RouterResult::Handled(Ok(resp)) => resp,
// There was an error
RouterResult::Handled(Err(_err)) => todo!(),
// No routes matched, request is passed back
RouterResult::NotHandled(_request) => todo!(),
}
} ```