Rust Web开发实战
发布时间:2025年1月6日
Actix-web 简介
Actix-web 是一个强大、实用且快速的 Rust web 框架。
创建基本的 Web 服务器
基本 HTTP 服务器
use actix_web::{web, App, HttpResponse, HttpServer};
async fn index() -> HttpResponse {
HttpResponse::Ok().body("Hello world!")
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.route("/", web::get().to(index))
})
.bind("127.0.0.1:8080")?
.run()
.await
}
处理 JSON 数据
JSON 处理示例
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct User {
name: String,
email: String,
}
async fn create_user(user: web::Json) -> HttpResponse {
HttpResponse::Ok().json(user.0)
}
数据库集成
使用 SQLx 或 Diesel 进行数据库操作:
SQLx 示例
use sqlx::PgPool;
async fn get_users(pool: web::Data) -> HttpResponse {
match sqlx::query_as!(
User,
"SELECT name, email FROM users"
)
.fetch_all(pool.get_ref())
.await
{
Ok(users) => HttpResponse::Ok().json(users),
Err(_) => HttpResponse::InternalServerError().finish(),
}
}
中间件和认证
中间件示例
use actix_web::middleware::{Logger, Authentication};
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.wrap(Logger::default())
.wrap(Authentication::new())
.service(web::resource("/").to(index))
})
.bind("127.0.0.1:8080")?
.run()
.await
}
练习
通过以下项目练习 Web 开发:
- 创建一个简单的 REST API
- 实现用户认证系统
- 构建一个带数据库的完整Web应用