A helper for warp. Provide some macros to make warp easier.
Larp is far from stable. BE CAREFUL if want to use it on your product.
```toml [dependencies] warp = "0.1.9" larp = "0.0.1"
serde = "1.0.80" serde_derive = "1.0.80" ```
```rust
extern crate warp;
extern crate larp;
use warp::Filter;
fn main() { let route = get!().map(|| "hello, world"); warp::serve(route).run(([0; 4], 3000)) } ```
Now you can see "hello, world" at http://localhost:3000.
Create a route only responding to get request.
```rust
extern crate warp;
extern crate larp;
use warp::Filter;
fn main() { // handle / and response "hello, world" let hello_world = get!().map(|| "hello, world");
// handle /hello/:name and response "hello, $name" let hello_name = get!("hello" / String) .map(|name| format!("hello, {}", name));
// combine some routes let route = route!(/, helloworld, helloname);
warp::serve(route).run(([0; 4], 3000)) } ```
Create a route only responding to post request. The Content-Type
of request must be application/json
and it will be parsed automatically.
```rust
extern crate warp;
extern crate larp;
// for serializing Person
struct, you should import serde
and serde_derive
extern crate serde_derive; extern crate serde;
use warp::Filter;
struct Person { pub name: String, }
fn main() { // handle / and response "hello, world" let hello_world = post!().map(|| "hello, world");
// handle /person
// request body must be { name: 'someone' }
// response body is { name: 'someone' }
too
let hello_person = post!("person")
.map(|p: Person| warp::reply::json(&p));
// combine some routes let route = route!(/, helloworld, helloperson);
warp::serve(route).run(([0; 4], 3000)) } ```
Create a route only responding to put request. Same as post!
.
Create a route only responding to delete request. Same as get!
.
Make a subroute and combine some routes.
```rust // ...
fn main() { let hello_world = get!().map(|| "hello, world");
let hello_name = get!("hello" / String) .map(|name| format!("hello, {}", name));
let hellopostworld = post!().map(|| "hello, world");
let hello_person = post!("person") .map(|p: Person| warp::reply::json(&p));
// handle /get and /get/hello let get = route!("get", helloworld, helloname);
// handle /post and /post/person let post = route!("post", hellopostworld, hello_person);
let route = route!(/, get, post); warp::serve(route).run(([0; 4], 3000)) } ```