10 releases
new 0.2.0 | Dec 5, 2024 |
---|---|
0.1.9 | Aug 10, 2023 |
0.1.7 | Jul 29, 2023 |
0.1.6 | Feb 22, 2023 |
#347 in #automatic
621 downloads per month
Used in 2 crates
9KB
222 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
~8–16MB
~206K SLoC