根据任务要求审查这个生成端点,找出五类不同的风险。
为已认证租户创建订单,只接受 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))
}
生成代码仅作示例,不代表任何特定模型