13 releases
new 0.2.1 | Dec 5, 2024 |
---|---|
0.1.12 | Oct 31, 2023 |
0.1.6 | Jun 30, 2023 |
0.1.5 | Feb 22, 2023 |
0.1.0 | Aug 4, 2019 |
#2013 in Web programming
209 downloads per month
330KB
690 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
- task system with interval and cron
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
~13–22MB
~304K SLoC