Rust Web开发框架actix-web入门案例

概述

在看书的时候,用到了actix-web这个框架的案例。

书里面的版本是1.0,但是我看官网最新都4.4了。

为了抹平这种信息差,所以我决定把官方提供的示例代码过一遍。

核心代码

Cargo.toml

[package]
name = "hello"
version = "0.1.0"
edition = "2021"[dependencies]
actix-web = "4.4"
env_logger = "0.11"
log = "0.4"

main.rs

use actix_web::{middleware, web, App, HttpRequest, HttpServer};async fn index(req: HttpRequest) -> &'static str {println!("REQ: {req:?}");"Hello world!"
}#[actix_web::main]
async fn main() -> std::io::Result<()> {env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));log::info!("starting HTTP server at http://192.168.77.129:8000");let server = HttpServer::new(|| {App::new().wrap(middleware::Logger::default()).service(web::resource("/index.html").to(|| async {"Hello html!"})).service(web::resource("/").to(index))});server.bind("0.0.0.0:8000")?.run().await
}

运行和访问

http://192.168.77.129:8000/
在这里插入图片描述

http://192.168.77.129:8000/index.html
在这里插入图片描述

代码解读

引入依赖:

use actix_web::{middleware, web, App, HttpRequest, HttpServer};

首页路由:

  • 获取请求信息:index(req: HttpRequest)
  • 返回一个纯文本字符串:&'static str
async fn index(req: HttpRequest) -> &'static str {println!("REQ: {req:?}");"Hello world!"
}

入口方法:

  • 定义入口方法:#[actix_web::main]
  • 声明入口方法:async fn main() -> std::io::Result<()> {
  • 初始化日志:env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
  • 记录一个info级别的日志:log::info!("starting HTTP server at http://192.168.77.129:8000");
  • 创建服务对象:let server = HttpServer::new(|| {
  • 使用日志中间件:.wrap(middleware::Logger::default())
  • 挂载路由/index.html.service(web::resource("/index.html").to(|| async {"Hello html!"}))
  • 挂载路由/ .service(web::resource("/").to(index))
  • 启动服务:server.bind("0.0.0.0:8000")?
#[actix_web::main]
async fn main() -> std::io::Result<()> {env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));log::info!("starting HTTP server at http://192.168.77.129:8000");let server = HttpServer::new(|| {App::new().wrap(middleware::Logger::default()).service(web::resource("/index.html").to(|| async {"Hello html!"})).service(web::resource("/").to(index))});server.bind("0.0.0.0:8000")?.run().await
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/12553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

随笔:贝特弹琴

半年前&#xff0c;我买了一架朗朗代言的智能电子琴。所谓智能是指&#xff0c;它配套的手机软件知道你在按哪个键&#xff0c;它还能让任意按键发光。用专业术语说&#xff0c;它的键盘具有输入和输出功能&#xff0c;和软件组合起来是一个完整的计算机系统。 随着软件练习曲…

使用Postman来调用Salesforce Bulk API 2.0的方法

简介 Bulk API 2.0 可以支持大量数据增删改查&#xff0c; 用新版的Dataloader也可以进行访问&#xff0c;但Dataloader会把CSV里的数据先转成Bean对象&#xff0c;这样会耗费大量的时间&#xff0c;而且数据量过大会卡死&#xff0c;所以直接上传CSV会节省大量时间和避免卡死风…

关于电源1

电源的定义 广义定义&#xff1a;电源是将其它形式的能转换成电能的装置。 例如&#xff1a;发电机&#xff1a;将热能、水能、风能、核能、光照、震动等转化为电能的装置。 电池&#xff1a;将化学能转换为电能。 狭义定义&#xf…

每天认识新职业——程序员

一、程序员是什么 程序员是从事程序开发、程序维护的基层工作人员。一般将程序员分为程序设计人员和程序编码人员&#xff0c;但两者的界限并不非常清楚。随着互联网的不断普及&#xff0c;网络上把男程序员称作“程序猿"&#xff0c;女程序员称作“程序媛"。或统称…

Java进阶11 IO流、功能流

Java进阶11 IO流-功能流 一、字符缓冲流 字符缓冲流在源代码中内置了字符数组&#xff0c;可以提高读写效率 1、构造方法 方法说明BufferedReader(new FileReader(文件路径))对传入的字符输入流进行包装BufferedWriter(new FileWriter(文件路径))对传入的字符输出流进行包装…

电子商务电商数据采集接口||电子商务市场数据采集方法,你学到了吗?

小刘从某职业院校电子商务专业毕业后&#xff0c;-直在某品牌电商部负责运营工作&#xff0c;近期&#xff0c;同班同学小王邀请小刘加入创业大军&#xff0c;共同开设网店&#xff0c;销售家乡的螃蟹、鲜虾、扇贝等生鲜水产。 运营经验丰富的小刘决定&#xff0c;在创业开始前…

IT工具集项目

网址 https://github.com/CorentinTh/it-tools?tabreadme-ov-file 类似的项目应该有很多&#xff0c;提供各种it人员的小工具

SDN 实现 vxlan隧道

SDN vxlan隧道 官方介绍&#xff1a; VXLAN&#xff08;Virtual eXtensible Local Area Network&#xff0c;虚拟扩展局域网&#xff09;&#xff0c;是由IETF定义的NVO3&#xff08;Network Virtualization over Layer 3&#xff09;标准技术之一&#xff0c;是对传统VLAN协议…

中途离开项羽投奔刘邦的那些名将谋臣,最后的结果怎么样?

刘邦夺取天下后&#xff0c;说&#xff1a;我自己没什么能力&#xff0c;之所以击败项羽&#xff0c;都是大家的功劳。带兵横扫强敌&#xff0c;我不如韩信&#xff1b;筹措粮草物资&#xff0c;源远不断地给前线供应粮饷&#xff0c;我不如萧何&#xff1b;坐在帐中&#xff0…

地平线旭日X3开发板编译USB网卡驱动 AX88772B

由于使用的激光雷达是网口输出的&#xff0c; 为了不占用X3派已有的网口&#xff0c;接上去了一个绿联的usb网卡&#xff0c; 发现系统没有驱动&#xff0c;所以动手看看能不能自己编译一个 首先lsusb查看一下网卡型号 发现型号是AX88772B&#xff0c;去官网看了一下&#x…

记录用python跑csdn点赞接口

代码如下 # 导入request包 import requests # 请求URL URL3https://blog.csdn.net//phoenix/web/v1/article/like # 入参 data3{articleId:109552419} # 请求头 headers3{cookie:uuid_tt_dd10_30308678820-1713771851124-190368; loginbox_strategy%7B%22taskId%22%3A349%2C%2…

社交时代的象征:探索Facebook的文化影响

在当今社交媒体盛行的时代&#xff0c;Facebook作为其中的巨头之一&#xff0c;不仅是一个网络平台&#xff0c;更是社交文化的象征。本文将深入探讨Facebook在社交时代的文化影响&#xff0c;从用户行为到社会互动&#xff0c;从信息传播到文化交流&#xff0c;揭示其在塑造当…

穿越网络界限:探索NAT IPv4的神秘面纱

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 穿越网络界限&#xff1a;探索NAT IPv4的神秘面纱 前言NAT IPv4概述NAT IPv4的类型NAT IPv4的工作流程NAT IPv4的局限性和挑战 前言 在我们日常的网络使用中&#xff0c;我们或多或少都会遇到NAT&…

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第六套

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第六套 部分题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;&#xff08;共十套&#xff0c;每套四十题选择题&#xff09;获取&#xff08;WX:…

计算机发展史故事【15】

PC 新霸主 IBM PC 个人电脑&#xff0c;为IBM 公司创造了本世纪最辉煌的业绩。想当初&#xff0c;IBM 公司仰仗PC 电脑的“开放”政策&#xff0c;公开技术标准&#xff0c;鼓励同业仿照&#xff0c;其目的当然是想尽快以PC 机取代苹果电脑的主流地位&#xff0c;占领全球市场。…

Java(二)——方法与数组

文章目录 方法与数组方法方法的定义方法的执行实参与形参方法重载方法签名 数组创建与初始化数组的类型数组应用转字符串排序查找&#xff08;二分&#xff09;填充拷贝判等 二维数组创建及初始化遍历本质和内存分布不规则二维数组 方法与数组 方法 什么是方法&#xff1f; …

Linux-vi、vim

使用Xshell远程登录到Linux主机进行操作 命令行不用全部掌握&#xff0c; 一般编辑大文件&#xff0c;比较复杂的情况下&#xff0c; 我们还是使用Xftp工具&#xff0c; down下来再恢复回去。

AI绘画入门指南:完备的AI绘画学习路线,十分钟把你领进门

2024新风口大揭秘&#xff01;不是直播&#xff0c;也不是短视频&#xff0c;而是AI绘本&#xff01; 有一句话说得好&#xff1a;站在风口上&#xff0c;猪都能飞起来&#xff01;想要用AI拿到大结果&#xff0c;一定要选对大的垂类赛道。 那么&#xff0c;为什么是AI绘本呢…

第二证券股市策略:股票st连续跌停卖不出怎么办啊?

对于接连跌停的st股票买不出&#xff0c;投资者只能早早地挂出跌停托付单等着成交&#xff0c;在当天没有成交&#xff0c;其托付单会被撤销&#xff0c;投资者能够挑选进行隔夜托付卖出时&#xff0c;最好在证券公司清算之后&#xff0c;再进行托付卖出&#xff0c;否则&#…

低空经济之无人机

朋友们&#xff0c;今天来聊聊个超酷的话题——低空经济之无人机&#xff01; 无人机不仅让天空变得触手可及&#xff0c;还带来了无尽的商业可能&#xff0c;简直就是新时代的“空中小助手”啊&#xff01; 说到无人机&#xff0c;你们是不是也和我一样&#xff0c;脑海里立马…