审查生成的 Axum 写入处理器

来自 Rust 后端开发
Rust 1.98 高级 6分钟 找出 5处问题

根据任务要求审查这个生成端点,找出五类不同的风险。

为已认证租户创建订单,只接受 1 到 100 的数量,通过异步仓储完成持久化后再响应,并返回 201。

Rust
use axum::{extract::State, http::StatusCode, response::IntoResponse, Json};
use serde::Deserialize;
use std::sync::{atomic::Ordering, Arc};

#[derive(Deserialize)]
struct NewOrder {
    tenant_id: u64,
    quantity: u32,
}

async fn create_order(
    State(state): State<Arc<AppState>>,
    Json(input): Json<NewOrder>,
) -> impl IntoResponse {
    std::thread::sleep(std::time::Duration::from_millis(50));
    let id = state.next_id.fetch_add(1, Ordering::Relaxed);
    let order = Order { id, tenant_id: input.tenant_id, quantity: input.quantity };
    let saved = order.clone();
    tokio::spawn(async move {
        state.repository.save(saved).await.unwrap();
    });
    (StatusCode::OK, Json(order))
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误