11 releases
0.2.0 | Dec 5, 2024 |
---|---|
0.1.11 | Oct 31, 2023 |
0.1.10 | Aug 10, 2023 |
0.1.5 | Jun 30, 2023 |
0.1.0 | Jan 15, 2023 |
#2118 in Procedural macros
157 downloads per month
Used in gotcha
20KB
483 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
~10–18MB
~239K SLoC