Integra is a sleek, performant web framework for Rust, harnessing the power of the hyper
library.
hyper
, one of the Rust's fastest web libraries.Start by creating a new Rust project.
bash
cargo new integra_project
cd integra_project
Open Cargo.toml
and add the following lines under [dependencies]
:
toml
[dependencies]
integra = { version = "0.0.5" }
tokio = { version = "1", features = ["full"] }
hyper = "0.14"
Setup your server in src/main.rs
```rust
use hyper::{Server};
use std::net::SocketAddr;
use std::convert::Infallible;
use crate::web::getallroutes;
use integra::core::router::{ServiceWithRouter};
use std::sync::Arc;
use hyper::service::makeservicefn;
mod routes; mod web; mod app;
async fn main() { let router = getallroutes(); let shared_router = Arc::new(router);
let make_svc = make_service_fn(move |_conn| {
let service = ServiceWithRouter { router: shared_router.clone() };
async move { Ok::<_, Infallible>(service) }
});
let addr = SocketAddr::from(([127, 0, 0, 1], 3011));
let server = Server::bind(&addr).serve(make_svc);
if let Err(e) = server.await {
eprintln!("server error: {}", e);
}
}
2. Include app_routes.rs in `src/routes/mod.rs`
rust
pub mod approutes;
3. Collect all routes in `src/web.rs`
rust
use crate::routes::approutes;
use integra::core::router::Router;
use integra::routes;
use integra::route_collector;
pub fn getallroutes() -> Router { routecollector!( approutes ) }
```
Define your app for app_routes in src/app.rs
```rust
use hyper::{Body, Request, Response};
pub async fn index(_req: Request
) -> Response { Response::new(Body::from("Root path")) }pub async fn greet(_req: Request
) -> Response { Response::new(Body::from("Hello!")) } ```To-do
Routing system
Framework Architecture
To-do