rweb

Build Status

Yet another web server framework for rust.

Installation:

toml [dependencies] rweb = "0.6" tokio = "1"

Installation (with automatic openapi generation):

toml [dependencies] rweb = { version = "0.6", features = ["openapi"] } serde = "1" tokio = "1"

Features

Since rweb is based on warp, which features safety and correctness, rweb has same property.

```rust use rweb::*; use serde::{Serialize, Deserialize};

[get("/output")]

fn output() -> String { String::from("this returns 200 with text/plain mime type") }

[derive(Debug, Serialize, Deserialize, Schema)]

struct Product { id: String, title: String, }

[get("/products")]

fn products() -> Json> { // ... // This returns 200 with application/json }

[get("/products/{id}")]

fn product(id: String) -> Json { // ... // This returns 200 with application/json }

[get("/product")]

fn newproduct(product: Json) -> Json { // ... // This returns 200 with application/json }

[derive(Debug, Serialize, Deserialize, Schema)]

struct SearchOption { query: String, limit: usize, page_token: String, }

[get("/search")]

fn search(_product: Query) -> Json> { // ... // This returns 200 with application/json }

[tokio::main]

async fn main() { serve(output().or(product()).or(products()).or(search())).run(([127, 0, 0, 1], 3030)).await; }

```

If you want to use websocket, just declare a parameter typed Ws. It's all.

```rust use rweb::*;

[get("/ws")]

fn example(ws: ws::Ws) -> String { String::new("use ws.on_upgrade or extra") } ```

rweb supports automatically generating openapi specification file based on your code.

See: documentation for usage.

```rust // Build openapi for your API let (spec, filter) = openapi::spec().build(move || { // Your API's filters math::math() .or(products::products()) .or(generic::body()) .or(generic::optional()) .or(generic::search()) .or(response::response()) });

println!("go to http://localhost:3030/docs to interact with your openapi!"); serve(filter.or(openapi_docs(spec))) .run(([127, 0, 0, 1], 3030)) .await; ```

Comparison

| Name | rweb | actix-web | gotham | iron | nickel | rocket | rouille | Thruster | Tide | tower-web | warp | | ---------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | | License | license | license | license | license | license | license | license | license | license | license | license | | Version | version | version | version | version | version | version | version | version | version | version | version | | Recent downloads | recent downloads | recent downloads | recent downloads | recent downloads | recent downloads | recent downloads | recent downloads | recent downloads | recent downloads | recent downloads | recent downloads | | Github stars | github stars | github stars | github stars | github stars | github stars | github stars | github stars | github stars | github stars | github stars | github stars | | Contributors | contributors | contributors | contributors | contributors | contributors | contributors | contributors | contributors | contributors | contributors | contributors | | Activity | activity | activity | activity | activity | activity | activity | activity | activity | activity | activity | activity | | Base framework | hyper / warp | tokio | hyper | hyper | hyper | hyper | tiny-http | tokio | hyper | hyper | hyper | | https | Y | Y | Y | ? | ? | ? | ? | ? | ? | ? | Y | | http 2 | Y | Y | ? | ? | ? | ? | ? | ? | ? | ? | Y | | async | Y | Y | Y | | | | | Y | Y | Y | Y (via different method) | | stable rust | Y | Y | Y | Y | Y | | Y | Y | Y | Y | Y | | openapi support | Y | | | | | | | | | | |