Function feattle_ui::axum_router
source · pub fn axum_router<F>(admin_panel: Arc<AdminPanel<F>>) -> Router<()>
Expand description
Return an axum
router that serves the admin panel.
To use it, make sure to activate the cargo feature "axum"
in your Cargo.toml
.
The router will answer to the web UI under “/” and a JSON API under “/api/v1/” (see more at v1
):
- GET /api/v1/feattles
- GET /api/v1/feattle/{key}
- POST /api/v1/feattle/{key}
§Example
use std::future::IntoFuture;
use feattle_ui::{AdminPanel, axum_router};
use feattle_core::{feattles, Feattles};
use feattle_core::persist::NoPersistence;
use std::sync::Arc;
use tokio::net::TcpListener;
feattles! {
struct MyToggles { a: bool, b: i32 }
}
// `NoPersistence` here is just a mock for the sake of the example
let my_toggles = Arc::new(MyToggles::new(Arc::new(NoPersistence)));
let admin_panel = Arc::new(AdminPanel::new(my_toggles, "Project Panda - DEV".to_owned()));
let router = axum_router(admin_panel);
let listener = TcpListener::bind(("127.0.0.1", 3031)).await?;
tokio::spawn(axum::serve(listener, router.into_make_service()).into_future());