API Docs | Contributing | Chat
Tide is a minimal and pragmatic Rust web application framework built for rapid development. It comes with a robust set of features that make building async web applications and APIs easier and more fun.
In order to build a web app in Rust you need an HTTP server, and an async
runtime. After running cargo init
add the following lines to your
Cargo.toml
file:
# Example, use the version numbers you need
tide = "0.15.0"
async-std = { version = "1.8.0", features = ["attributes"] }
serde = { version = "1.0", features = ["derive"] }
Create an HTTP server that receives a JSON body, validates it, and responds with a confirmation message.
use tide::Request;
use tide::prelude::*;
#[derive(Debug, Deserialize)]
struct Animal {
name: String,
legs: u8,
}
#[async_std::main]
async fn main() -> tide::Result<()> {
let mut app = tide::new();
app.at("/orders/shoes").post(order_shoes);
app.listen("127.0.0.1:8080").await?;
Ok(())
}
async fn order_shoes(mut req: Request<()>) -> tide::Result {
let Animal { name, legs } = req.body_json().await?;
Ok(format!("Hello, {}! I've put in an order for {} shoes", name, legs).into())
}
$ curl localhost:8080/orders/shoes -d '{ "name": "Chashu", "legs": 4 }'
Hello, Chashu! I've put in an order for 4 shoes
$ curl localhost:8080/orders/shoes -d '{ "name": "Mary Millipede", "legs": 750 }'
number too large to fit in target type
See more examples in the examples directory.
- Rising Tide: building a modular web framework in the open
- Routing and extraction in Tide: a first sketch
- Middleware in Tide
- Tide's evolving middleware approach
- Tide, the present and future of
- Tide channels
To add a link to this list, edit the markdown
file and
submit a pull request (github login required)
Listing here
does not constitute an endorsement or recommendation from the tide
team. Use at your own risk.
- tide-rustls tls for tide based on async-tls/rustls
- tide-tera
- tide-handlebars
- askama (includes support for tide)
- tide-compress
- tide-sqlx - SQLx pooled connections & transactions
- tide-trace
- tide-tracing
- opentelemetry-tide
- driftwood http logging middleware
- tide-compressed-sse
- tide-websockets
- async-redis-session
- async-sqlx-session (sqlite and postgres currently)
- async-mongodb-session
- dot dot vote
- tide-example (sqlx + askama)
- playground-tide-mongodb
- tide-morth-example
Want to join us? Check out our The "Contributing" section of the guide and take a look at some of these issues:
The Tide project adheres to the Contributor Covenant Code of Conduct. This describes the minimum behavior expected from all contributors.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.