10 releases
0.1.9 | Mar 11, 2024 |
---|---|
0.1.8 | Oct 7, 2023 |
0.1.2 | Feb 20, 2023 |
0.1.0 | Jan 15, 2023 |
#4 in #featured
Used in conservator
28KB
626 lines
gotcha
provide a featured web framework
aim to
- everything of axum
- automatically swagger api generation
- built-in message mechanism
- environment based configuration system, support environment resolver
${ANY_ENV_VAR}
and path variable${app.database.name}
powered by yaac - logging system
- opt-in prometheus integration
- sqlx based magic ORM
- cron-based task system
get started
add dependency into Cargo.toml
gotcha = {version = "0.1"}
tokio = {version = "1", features = ["macros", 'rt-multi-thread']}
serde = {version="1", features=["derive"]}
use serde::Deserialize;
use gotcha::{get, GotchaApp, GotchaConfigLoader, Responder, State};
use gotcha::axum::extract::FromRef;
pub(crate) async fn hello_world(_state: State<Config>) -> impl Responder {
"hello world"
}
#[derive(Debug, Deserialize, Clone)]
pub(crate) struct Config {}
#[tokio::main]
async fn main() {
let config: Config = GotchaConfigLoader::load(None);
GotchaApp::new().get("/", hello_world)
.data(config)
.done()
.serve("127.0.0.1", 8000).await
}
Dependencies
~6MB
~112K SLoC