Rust Web Services
Build Rust HTTP services with explicit state, typed boundaries, observable behavior, and production-grade runtime contracts.
Operating Model
- Read the existing service shape first: router setup, app state, middleware layers, config, database access, tests, deployment scripts, and observability.
- Prefer
axum plus tower layers for new HTTP services unless the repo already standardizes on another framework.
- Keep handlers thin. Extract inputs, call domain/service code, map results into HTTP responses.
- Make app state explicit and clone-cheap. Avoid hidden globals and ad hoc connection creation per request.
- Treat errors, tracing, timeouts, request size limits, and shutdown as part of the feature, not afterthoughts.
Reference Map
references/axum-tower-architecture.md for router structure, state, extractors, middleware, errors, and versioned APIs.
references/runtime-config-data.md for Tokio runtime concerns, config, database access, background jobs, and graceful shutdown.
references/testing-observability.md for integration tests, tracing, metrics, contract tests, and production readiness.
Defaults
- Use
tokio with only required features unless the repo uses full feature sets consistently.
- Use
serde DTOs at HTTP boundaries and domain types internally.
- Use
thiserror for domain errors and typed response mapping at the HTTP edge.
- Use
tracing/tracing-subscriber with structured spans and request IDs.
- Use
sqlx for database-backed services when compile-time query checking and async pooling are useful.
Verification
For service changes:
cargo fmt --all --check
cargo test --all-targets
cargo clippy --all-targets --all-features -- -D warnings
Add integration tests for new routes, error status mapping, auth/authorization branches, config parsing, database behavior, and graceful shutdown or background work when touched.
1---2name: rust-web-services3description: Implicit Rust web service skill. Use for Axum, Tokio, Tower, Hyper, REST APIs, middleware/layers, request extractors, typed errors, tracing, config, graceful shutdown, SQLx, background jobs, service tests, and production Rust HTTP architecture.4license: MIT5---67# Rust Web Services89Build Rust HTTP services with explicit state, typed boundaries, observable behavior, and production-grade runtime contracts.1011## Operating Model12131. Read the existing service shape first: router setup, app state, middleware layers, config, database access, tests, deployment scripts, and observability.142. Prefer `axum` plus `tower` layers for new HTTP services unless the repo already standardizes on another framework.153. Keep handlers thin. Extract inputs, call domain/service code, map results into HTTP responses.164. Make app state explicit and clone-cheap. Avoid hidden globals and ad hoc connection creation per request.175. Treat errors, tracing, timeouts, request size limits, and shutdown as part of the feature, not afterthoughts.1819## Reference Map2021- `references/axum-tower-architecture.md` for router structure, state, extractors, middleware, errors, and versioned APIs.22- `references/runtime-config-data.md` for Tokio runtime concerns, config, database access, background jobs, and graceful shutdown.23- `references/testing-observability.md` for integration tests, tracing, metrics, contract tests, and production readiness.2425## Defaults2627- Use `tokio` with only required features unless the repo uses full feature sets consistently.28- Use `serde` DTOs at HTTP boundaries and domain types internally.29- Use `thiserror` for domain errors and typed response mapping at the HTTP edge.30- Use `tracing`/`tracing-subscriber` with structured spans and request IDs.31- Use `sqlx` for database-backed services when compile-time query checking and async pooling are useful.3233## Verification3435For service changes:3637```bash38cargo fmt --all --check39cargo test --all-targets40cargo clippy --all-targets --all-features -- -D warnings41```4243Add integration tests for new routes, error status mapping, auth/authorization branches, config parsing, database behavior, and graceful shutdown or background work when touched.