Web开发

首页 » 常识 » 问答 » actixweb入门指南act
TUhjnbcbe - 2020/12/12 12:04:00
北京治疗白癜风哪里医院最专业 http://www.xftobacco.com/
actix-web可以助力你快速、自信地在使用Rust程序设计语言(Rust简体中文版文档)开发web服务,本指南将指导你快速熟悉它。本文档主要集中在actix-web框架上。有关基于actor模型构建的actix框架的信息,请参阅actix文档(或较低级别的actixAPI文档)。若你希望立即开始actix-web的学习,请转到入门指南。若你已经了解actix-web,需要查阅特定API的信息,请阅读actix-webAPI文档。

actixcrate属于Rust生态

actix包含诸多功能和特性。actix系统基于强大的actor模型构建,在actix系统的基础上又构建了actix-web系统。一般情况下,你都是在actix-web系统上进行工作,actix-web提供了一个功能强大、速度极快的web开发框架。

我们称actix-web是小巧而实用的框架,总而言之,actix-web是有些变化的微框架(micro-framework)。如果你已经是一个Rust程序员,你可能会很快找到感觉。即使你暂不熟悉Rust编程语言,你也会发现actix-web很容易上手。使用actix-web开发的应用程序,将有一个HTTP服务器包含在可执行文件中。你可以将其放在另一个HTTP服务器(如nginx)之后,或直接提供服务。即使没有其它HTTP服务器,actix-web也足够强大:可以提供对HTTP/1、HTTP/2,以及TLS(HTTPS)的支持。这使得它对于构建可供分发的小型服务非常有用。

请注意:actix-web运行在Rust1.42或更高的稳定(stable)版本之上。

安装Rust

如果你还未安装Rust,推荐使用rustup来管理你的Rust,详细参见官方的Rust安装指南。

actix-web目前支持的最低支持为Rust-1.42(MSRV),运行rustupupdate将更新到Rust的最新版本。本指南假设您运行的是Rust-1.42或更高版本。

创建项目

首先,创建一个新的二进制Cargo项目,并切换到新目录:

cargonewhello-worldcdhello-world

通过向Cargo.toml文件添加以下内容,将actix-web添加为项目的依赖项。

[dependencies]actix-web="3"

请求处理程序使用异步函数,接受零个或多个参数。这些参数可以从请求中提取(参见FromRequesttrait),并返回可以转换为HttpResponse的类型(参见Respondertrait):

useactix_web::{get,post,web,App,HttpResponse,HttpServer,Responder};#[get("/")]asyncfnhello()-implResponder{HttpResponse::Ok().body("Helloworld!")}#[post("/echo")]asyncfnecho(req_body:String)-implResponder{HttpResponse::Ok().body(req_body)}asyncfnmanual_hello()-implResponder{HttpResponse::Ok().body("Heythere!")}

请注意,其中一些处理程序因为使用内建宏的原因,直接附加了路由信息,从而允许你指定处理程序应该响应的方法和路径。你将在下面示例看到不使用路由宏的情况下,如何注册自定义路由。

接下来,创建App实例并注册请求处理程序。

对于使用了路由宏的处理程序,使用App::service方法注册路由;

对不使用路由宏而注册自定义路由的情况,使用App::route方法。

最后,使用HttpServer启动应用程序,它将你的App实例作为“应用程序工厂”,以处理传入的请求。

#[actix_web::main]asyncfnmain()-std::io::Result(){HttpServer::new(

{App::new().service(hello).service(echo).route("/hey",web::get().to(manual_hello))}).bind(".0.0.1:")?.run().await}

代码工作已经完成,我们使用cargorun编译并运行程序。在actix运行时中,#[actix_web::main]宏用来执行异步main函数。

现在,你可以访问

1
查看完整版本: actixweb入门指南act