Expand description
Core do framework serverust — APIs HTTP e AWS Lambda em Rust, com a ergonomia do FastAPI e a arquitetura do NestJS.
Este crate concentra as peças que você usa em todo handler:
App— builder principal: acumula rotas, registra services noContainer, expõe/openapi.json,/docse/redoc.Route/IntoRoute— tipo emitido pelas macros#[get]/#[post]/etc (definidas emserverust-macros).extract::Json— extractor validante: rodavalidator::Validateantes do handler e responde HTTP 422 padronizado em falha.ApiError/validation_error_response— payload de erro JSON consistente. Use com#[derive(ApiError)]em enums de domínio.Guard/Pipe/Interceptor— primitivas de pipeline.ServerustConfig— config typed lida deserverust.tomlvia figment.
Exemplo mínimo servindo HTTP local. Em produção, combine com o crate
serverust-lambda (trait AppRuntime) para um .run() que detecta entre
Lambda e HTTP automaticamente:
use serverust_core::App;
use serverust_macros::get;
#[get("/")]
async fn hello() -> &'static str { "hello" }
#[tokio::main]
async fn main() -> std::io::Result<()> {
App::new().route(hello).run_http("127.0.0.1:3000").await
}Mais exemplos e tutorial completo em https://github.com/JaimeJunr/serverust/blob/main/docs/guides/lambda-tutorial.md.
Re-exports§
pub use config::ServerustConfig;
Modules§
- config
- Carregamento de configuração via figment (serverust.toml + env vars).
- extract
- Extractors tipados expostos pelo framework.
Structs§
- App
- Builder principal do framework.
- Container
- State do
axum::Router: mapaTypeId→Arc<dyn Any>carregando os serviços registrados viacrate::App::provide. - Guard
Check - Extractor zero-cost que dispara a verificação do guard
Gcomo parte do pipeline de extractors do axum. Usado pelas macros#[guard(G)]; raramente instanciado diretamente. - Json
- Extractor JSON com validação automática.
- Parse
Uuid Pipe - Pipe que converte uma
Stringemuuid::Uuid. Falha → HTTP 400 com payload{ "error": "invalid_uuid", "input": "<valor>" }. - Pipe
Path - Extractor que aplica um
Pipe<String>sobre um único segmento da URL (extraído viaaxum::extract::Path<String>). - Route
- Metadata de uma rota registrável no
crate::App.
Traits§
- ApiError
- Trait implementada por enums de erro de domínio. Normalmente não é
implementada manualmente — use
#[derive(ApiError)]do crateserverust-macros, que lê#[status(N)]e#[message("...")]por variante e emite simultaneamenteimpl ApiError+impl IntoResponse. - Guard
- Verificação de autorização/permissão executada antes do handler.
- Injectable
- Marker trait emitida por
#[injectable]. Não impõe método; apenas confirma intenção de injeção e habilita verificações de tipo nos testes. - Interceptor
- Middleware com semântica de “wrap” sobre a execução: pode inspecionar a request antes do handler e/ou modificar a response depois.
- Into
Route - Implementado pelas structs geradas pelas macros
#[get],#[post], etc. - Pipe
- Transformação tipada aplicada a um input antes de chegar ao handler.
Functions§
- validation_
error_ response - Constrói a resposta HTTP 422 padronizada a partir de erros do validator.