Rust web开发 ActixWeb 入门,Rust Web开发入门,ActixWeb框架简介

马肤

温馨提示:这篇文章已超过450天没有更新,请注意相关的内容是否还可用!

摘要:本篇文章介绍了Rust语言的Web开发框架ActixWeb的入门知识。文章详细阐述了如何使用ActixWeb构建Web应用程序,包括基本的路由设置、中间件的使用以及如何处理HTTP请求和响应等关键概念。对于初学者来说,这是一个很好的起点,可以帮助他们快速掌握ActixWeb框架的使用,从而进行高效的Rust Web开发。
Rust web开发 ActixWeb 入门,Rust Web开发入门,ActixWeb框架简介 第1张

Actix Web 仍然是 Rust Web 后端生态系统中极具竞争力的框架,尽管过去可能有一些变化,但它依然稳健,并且是 Rust 中最受欢迎的 Web 框架之一,最初基于同名的 actor 框架(actix),现在它已经独立发展,并且已经专注于其专业领域。

本文将主要讨论 Actix Web v4.4 的基础入门知识。

Actix Web 入门

使用cargo init example-api 生成项目,然后进入到该文件夹中,使用以下命令将 actix-web crate 添加到项目中:

cargo add actix-web

你已经准备好了开始,如果你想直接编写你的应用程序,可以复制样板文件,如下所示:

use actix_web::{web, App, HttpServer, Responder};
#[get("/")]
async fn index() -> impl Responder {
    "Hello world!"
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new().service(
            // prefixes all resources and routes attached to it...
            web::scope("/")
                // ...so this handles requests forGET /app/index.html
                .route("/", web::get().to(index)),
        )
    })
    .bind(("127.0.0.1", 8080))?
    .run()
    .await
}

Actix Web 中的路由

在 Actix Web 中,大多数返回实现actix_web::Responder trait 的函数都可以用作路由,以下是一个基本的 Hello World 示例:

#[get("/")]
async fn index() -> impl Responder {
    "Hello world!"
}

你可以将此处理函数输入到actix_web::App 中,然后将其作为参数传递给HttpServer

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new().service(
            // prefixes all resources and routes attached to it...
            web::scope("/")
                // ...so this handles requests for the base route
                .route("/index.html", web::get().to(index)),
        )
    })
    .bind(("127.0.0.1", 8080))?
    .run()
    .await
}

每当访问/index.html 时,它应该返回 "Hello world!",如果你需要创建多个路由类型,并将它们最终合并到应用程序中,你可能会发现这种方法有点繁琐,在这种情况下,你需要使用ServiceConfig 类型,可以按照以下方式编写:

Actix Web 中的提取器(Extractor)是用于类型安全地请求数据的工具,当处理函数接收到请求时,它将尝试从请求中提取相关数据。actix_web::web::Json 提取器会尝试从请求正文中提取 JSON,为了成功反序列化 JSON,你需要使用 serde 包,最好与 derive 函数一起使用,为你的结构添加自动反序列化和序列化派生宏,你可以通过执行以下命令来安装 serde:

现在我们可以将其用作派生宏,如下所示:

Actix Web 还支持 paths、queries 和 forms,虽然对于 paths 你还需要使用 Actix Web 路由宏来声明路径参数的确切位置,我们可以在下面找到所有这 3 种方法的示例:

对于自定义提取器的创建,你只需要实现FromRequest 特征,查看 HTTP 标头提取器的这段代码,它将展示其具体工作原理: 只要响应实现了actix_web::Responder trait,就能进行响应,虽然在实现响应类型方面已经有广泛的实现,因此通常不需要自己实现类型,但在某些特定用例中自定义可能会有所帮助;能够记录应用程序可能具有的所有类型的响应。 连接到数据库 在设置数据库时,你需要设置数据库连接: 使用 Shuttle,我们可以简化这个过程,因为运行时会为你配置数据库: 以下是修改后的内容,包含了错别字修正、语句修饰以及补充内容,希望对你有所帮助!


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码