chore: scaffold axum server with in-memory CRUD, auth stub and tracing
This commit is contained in:
@@ -1,9 +1,49 @@
|
||||
use axum::{Router, routing::get};
|
||||
mod error;
|
||||
mod model;
|
||||
mod web;
|
||||
|
||||
use anyhow::Result;
|
||||
use axum::{Router, middleware, response::Response};
|
||||
use tower_cookies::CookieManagerLayer;
|
||||
use tower_http::services::ServeDir;
|
||||
use tracing::info;
|
||||
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||
|
||||
use crate::{
|
||||
model::FileController,
|
||||
web::{routes_file::routes_file, routes_health::routes_health, routes_login::routes_login},
|
||||
};
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let app = Router::new().route("/", get(|| async { "Hello Async!\n"}));
|
||||
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
|
||||
axum::serve(listener, app).await.unwrap();
|
||||
async fn main() -> Result<()> {
|
||||
tracing_subscriber::registry()
|
||||
.with(
|
||||
tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| {
|
||||
format!("{}=info,tower_http=info", env!("CARGO_CRATE_NAME")).into()
|
||||
}),
|
||||
)
|
||||
.with(tracing_subscriber::fmt::layer())
|
||||
.init();
|
||||
|
||||
let file_controller = FileController::new().await?;
|
||||
|
||||
let app = Router::new()
|
||||
.nest("/api", routes_file(file_controller))
|
||||
.merge(routes_health())
|
||||
.merge(routes_login())
|
||||
.layer(middleware::map_response(main_response_mapper))
|
||||
.layer(CookieManagerLayer::new())
|
||||
.fallback_service(ServeDir::new("./"));
|
||||
|
||||
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await?;
|
||||
info!("listening on {}", listener.local_addr().unwrap());
|
||||
|
||||
axum::serve(listener, app).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn main_response_mapper(res: Response) -> Response {
|
||||
info!("response mapper: {}", res.status());
|
||||
res
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user