Actix-Web路由如何实现处理?
摘要:一、路由 上一篇文章,介绍了Actix-Web入门知识,链接如下:https:www.cnblogs.comxiao987334176p19271995 接下来介绍路由 基础路由 修改主代码 srcmain.rs use act
一、路由
上一篇文章,介绍了Actix-Web入门知识,链接如下:https://www.cnblogs.com/xiao987334176/p/19271995
接下来介绍路由
基础路由
修改主代码 src/main.rs
use actix_web::{get, post, put, delete, web, HttpResponse};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct User {
id: u32,
name: String,
email: String,
}
// GET 请求
#[get("/users")]
async fn get_users() -> HttpResponse {
let users = vec![
User {
id: 1,
name: "Alice".to_string(),
email: "alice@example.com".to_string(),
},
User {
id: 2,
name: "Bob".to_string(),
email: "bob@example.com".to_string(),
},
];
HttpResponse::Ok().json(users)
}
// GET 请求(带路径参数)
#[get("/users/{id}")]
async fn get_user(path: web::Path<u32>) -> HttpResponse {
let user_id = path.into_inner();
let user = User {
id: user_id,
name: "Alice".to_string(),
email: "alice@example.com".to_string(),
};
HttpResponse::Ok().json(user)
}
// POST 请求(创建资源)
#[post("/users")]
async fn create_user(user: web::Json<User>) -> HttpResponse {
println!("创建用户: {:?}", user.name);
HttpResponse::Created().json(user.into_inner())
}
// PUT 请求(更新资源)
#[put("/users/{id}")]
async fn update_user(
path: web::Path<u32>,
user: web::Json<User>,
) -> HttpResponse {
let user_id = path.into_inner();
println!("更新用户 {}: {:?}", user_id, user.name);
HttpResponse::Ok().json(user.into_inner())
}
// DELETE 请求
#[delete("/users/{id}")]
async fn delete_user(path: web::Path<u32>) -> HttpResponse {
let user_id = path.into_inner();
println!("删除用户: {}", user_id);
HttpResponse::NoContent().finish()
}
以上是示例代码,看不出效果。
