Domain Web

作者 actionbook5c40d3ad7851无许可证1.5K 个星标收录于 2026年10月8日更新于 2026年10月8日仓库6周前更新

Use when building web services. Keywords: web server, HTTP, REST API, GraphQL, WebSocket, axum, actix, warp, rocket, tower, hyper, reqwest, middleware, router, handler, extractor, state management, authentication, authorization, JWT, session, cookie, CORS, rate limiting, web 开发, HTTP 服务, API 设计, 中间件, 路由

AI 生成的概览

为构建 Rust Web 服务提供指导,涵盖异步处理程序、状态、中间件和框架选择。

功能
该技能为使用 Rust 构建 Web 服务提供领域约束和设计指导。它将无状态 HTTP、并发和安全等 Web 需求映射到 Rust 设计影响,并比较 axum、actix-web、warp 和 rocket 等框架。它还列出关键 crate 和设计模式,包括一个带错误处理的 axum 处理程序示例。
适用场景
在构建或设计 Rust Web 服务、HTTP 服务器或 REST 与 GraphQL API 时使用。在选择 Rust Web 框架,或处理中间件、提取器、共享状态、身份验证或请求验证时也适用。
运行要求
无需脚本或特殊工具,仅为说明性内容。该指导假设使用 Rust 进行 Web 开发,涉及 axum、actix-web、reqwest、serde_json、jsonwebtoken、tower-sessions、sqlx 和 diesel 等 crate。

Web Domain

Layer 3: Domain Constraints

Domain Constraints → Design Implications

Domain RuleDesign ConstraintRust Implication
Stateless HTTPNo request-local globalsState in extractors
ConcurrencyHandle many connectionsAsync, Send + Sync
Latency SLAFast responseEfficient ownership
SecurityInput validationType-safe extractors
ObservabilityRequest tracingtracing + tower layers

Critical Constraints

Async by Default

RULE: Web handlers must not blockWHY: Block one task = block many requestsRUST: async/await, spawn_blocking for CPU work

State Management

RULE: Shared state must be thread-safeWHY: Handlers run on any threadRUST: Arc<T>, Arc<RwLock<T>> for mutable

Request Lifecycle

RULE: Resources live only for request durationWHY: Memory management, no leaksRUST: Extractors, proper ownership

Trace Down ↓

From constraints to design (Layer 2):

"Need shared application state"    ↓ m07-concurrency: Use Arc for thread-safe sharing    ↓ m02-resource: Arc<RwLock<T>> for mutable state
"Need request validation"    ↓ m05-type-driven: Validated extractors    ↓ m06-error-handling: IntoResponse for errors
"Need middleware stack"    ↓ m12-lifecycle: Tower layers    ↓ m04-zero-cost: Trait-based composition

Framework Comparison

FrameworkStyleBest For
axumFunctional, towerModern APIs
actix-webActor-basedHigh performance
warpFilter compositionComposable APIs
rocketMacro-drivenRapid development

Key Crates

PurposeCrate
HTTP serveraxum, actix-web
HTTP clientreqwest
JSONserde_json
Auth/JWTjsonwebtoken
Sessiontower-sessions
Databasesqlx, diesel
Middlewaretower

Design Patterns

PatternPurposeImplementation
ExtractorsRequest parsingState(db), Json(payload)
Error responseUnified errorsimpl IntoResponse
MiddlewareCross-cuttingTower layers
Shared stateApp configArc<AppState>

Code Pattern: Axum Handler

rust
async fn handler(    State(db): State<Arc<DbPool>>,    Json(payload): Json<CreateUser>,) -> Result<Json<User>, AppError> {    let user = db.create_user(&payload).await?;    Ok(Json(user))}
// Error handlingimpl IntoResponse for AppError {    fn into_response(self) -> Response {        let (status, message) = match self {            Self::NotFound => (StatusCode::NOT_FOUND, "Not found"),            Self::Internal(_) => (StatusCode::INTERNAL_SERVER_ERROR, "Internal error"),        };        (status, Json(json!({"error": message}))).into_response()    }}

Common Mistakes

MistakeDomain ViolationFix
Blocking in handlerLatency spikespawn_blocking
Rc in stateNot Send + SyncUse Arc
No validationSecurity riskType-safe extractors
No error responseBad UXIntoResponse impl

Trace to Layer 1

ConstraintLayer 2 PatternLayer 1 Implementation
Async handlersAsync/awaittokio runtime
Thread-safe stateShared stateArc<T>, Arc<RwLock<T>>
Request lifecycleExtractorsOwnership via From<Request>
MiddlewareTower layersTrait-based composition

Related Skills

WhenSee
Async patternsm07-concurrency
State managementm02-resource
Error handlingm06-error-handling
Middleware designm12-lifecycle

来源与署名

来源:actionbook/rust-skills位于skills/domain-web提交5c40d3a

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架