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 开发:

  1. 创建一个简单的 REST API
  2. 实现用户认证系统
  3. 构建一个带数据库的完整Web应用
返回首页