refacto: nest axum templates routes
This commit is contained in:
parent
699978ad5e
commit
a82e43ce7f
@ -2,26 +2,27 @@ mod templates;
|
|||||||
|
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
use askama::Template;
|
||||||
use askama_axum::IntoResponse;
|
use askama_axum::IntoResponse;
|
||||||
use templates::{hello::HelloResponse, index::GetIndexResponse};
|
use axum::http::{StatusCode, Uri};
|
||||||
use tower_http::services::ServeDir;
|
use tower_http::services::ServeDir;
|
||||||
|
|
||||||
async fn root() -> impl IntoResponse {
|
async fn fallback(uri: Uri) -> (StatusCode, String) {
|
||||||
return GetIndexResponse {}.into_response();
|
(StatusCode::NOT_FOUND, format!("No route for {uri}"))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn hello() -> impl IntoResponse {
|
#[derive(Template)]
|
||||||
return HelloResponse {
|
#[template(path = "index.html")]
|
||||||
name: "Theo".to_string(),
|
pub struct GetIndexResponse;
|
||||||
}
|
|
||||||
.into_response();
|
async fn root() -> impl IntoResponse {
|
||||||
|
GetIndexResponse {}.into_response()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_router(assets_path: &Path) -> axum::Router {
|
pub fn get_router(assets_path: &Path) -> axum::Router {
|
||||||
let router = axum::Router::new()
|
axum::Router::new()
|
||||||
.nest_service("/assets", ServeDir::new(assets_path))
|
.nest_service("/assets", ServeDir::new(assets_path))
|
||||||
.route("/", axum::routing::get(root))
|
.route("/", axum::routing::get(root))
|
||||||
.route("/hello", axum::routing::get(hello));
|
.merge(templates::get_routes())
|
||||||
|
.fallback(fallback)
|
||||||
router
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,20 @@
|
|||||||
use askama::Template;
|
use askama::Template;
|
||||||
|
use askama_axum::IntoResponse;
|
||||||
|
use axum::{routing, Router};
|
||||||
|
|
||||||
#[derive(Template)]
|
#[derive(Template)]
|
||||||
#[template(path = "hello.html")]
|
#[template(path = "hello.html")]
|
||||||
pub struct HelloResponse {
|
struct HelloResponse {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn hello() -> impl IntoResponse {
|
||||||
|
HelloResponse {
|
||||||
|
name: "Theo".to_string(),
|
||||||
|
}.into_response()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_routes() -> Router {
|
||||||
|
Router::new()
|
||||||
|
.route("/", routing::get(hello))
|
||||||
|
}
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
use askama::Template;
|
|
||||||
|
|
||||||
#[derive(Template)]
|
|
||||||
#[template(path = "index.html")]
|
|
||||||
pub struct GetIndexResponse;
|
|
@ -1,2 +1,8 @@
|
|||||||
pub mod hello;
|
use axum::Router;
|
||||||
pub mod index;
|
|
||||||
|
mod hello;
|
||||||
|
|
||||||
|
pub fn get_routes() -> Router {
|
||||||
|
Router::new()
|
||||||
|
.nest("/hello", hello::get_routes())
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user