Domain Web

actionbook/rust-skills/skills/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 從公開儲存庫中收錄這些內容。

檢舉或申請下架