Axum Service Skill
Geração e revisão idiomática de serviços web Axum 0.8 - uma Skill de Agente para Rust 1.97.0, Tokio 1.x e serde 1.0.
Busque em todas as páginas da documentação
Geração e revisão idiomática de serviços web Axum 0.8 - uma Skill de Agente para Rust 1.97.0, Tokio 1.x e serde 1.0.
Produz uma checklist de serviço HTTP implantável: workspace Cargo.toml, módulos Router, AppState compartilhado (PgPool, reqwest::Client), rotas /health e /ready, subscriber tracing, erros de domínio thiserror mapeados para códigos de status e testes de integração com tower::ServiceExt.
| Entrada | Por quê |
|---|---|
| Nome do serviço | Nome do crate, campos de log, tag da imagem |
| DB necessário? | sqlx::PgPool no estado vs stub |
| Modelo de autenticação | Nenhum, header de chave de API, middleware JWT |
| Porta | Padrão 3000 ou convenção da plataforma |
| Caminho do workspace | services/billing-api vs crate raiz |
Cargo.toml com axum, tokio, tower-http, tracing, serde, sqlx opcionalsrc/main.rs com TcpListener, desligamento graciososrc/routes/mod.rs, health.rs, roteadores de domíniosrc/error.rs com mapeamento IntoResponsetests/health.rs usando requisições oneshotspawn_blocking ou DB assíncrono apenas..env.example.tracing estruturado - #[instrument] em handlers; sem println! em caminhos de produção.Arc<PgPool> e reqwest::Client reutilizado.cd services/billing-api
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test
cargo run &
curl -sf http://localhost:3000/health
curl -sf http://localhost:3000/readyuse axum::{routing::get, Router};
use std::net::SocketAddr;
use tokio::net::TcpListener;
mod routes;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
tracing_subscriber::fmt::init();
let app = Router::new()
.merge(routes::health::router());
let addr = SocketAddr::from(([0, 0, 0, 0], 3000));
let listener = TcpListener::bind(addr).await?;
axum::serve(listener, app).await?;
Ok(())
}Axum quando o padrão da equipe é o ecossistema Tokio + Tower. Actix apenas quando ADR já o seleciona.
Apenas quando a entrada especifica GraphQL desde o primeiro dia; roteadores REST padrão.
Adicionar utoipa em um PR subsequente após as rotas estabilizarem.
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4 e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026