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,一经查实,立即删除!

相关文章

VueRouter使用总结

VueRouter 是 Vue.js 的官方路由管理器&#xff0c;用于构建单页面应用&#xff08;SPA&#xff09;。在使用 VueRouter 时&#xff0c;开发者可以定义路由映射规则&#xff0c;并在 Vue 组件中通过编程式导航或声明式导航的方式控制页面的跳转和展示。以下是 VueRouter 使用的…

随笔:贝特弹琴

半年前&#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;在创业开始前…

java处理视频

文章目录 JCodecXuggle(已被弃用)FFmpegjavacvjave经过调研,目前市面上主流的有以下几种: JCodec 优势: 简单。不提供视频编辑或录制功能。缺点: 只能通过File的方式获取视频信息,无法通过url方式获取无法转为M3U8格式使用: <dependency><groupId>org.jc…

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协议…

电子商务员考试题库(二)

21&#xff0e;物流活动实际上就是我们常说的储运业。〔〕 22. 电子商务不仅要求物流管理人员既具有较高的物流管理水平&#xff0c;而且也要求物流管理员要具有较 高的电子商务知识&#xff0c;并在实际的动作过程中&#xff0c;能有效地将二者有机地结合在一起。〔 √ 〕 …

环境工程设计专项资质乙级如何升甲级

环境工程设计专项资质乙级升甲级的流程和要求可能因地区和具体规定而有所不同&#xff0c;但一般来说&#xff0c;以下是一些常见的步骤和要求&#xff1a; 前期准备&#xff1a; 资质自查&#xff1a;首先&#xff0c;企业需要确认自身是否已经满足甲级资质的各项基本条件&…

行业早报5.15

1.宏达电&#xff08;HTC&#xff09;4 月营收新台币 1.73 亿元&#xff0c;同比减少 42.4%&#xff1b; 2.TCL 实业 2023 年营收突破 1200 亿元&#xff0c;同比增长 13%&#xff1b; 3.乘联会&#xff1a;初步统计 4 月乘用车市场零售 158.5 万辆&#xff0c;同比下降 2%&…

c语言字符数组的一些操作

获取数组的实际长度和数组的总长度 #include <getopt.h> #include <stdio.h> #include <stdlib.h>#define MAX_PATH 256 char filename[MAX_PATH 5]; int main(int argc, char** argv) {const char* optarg "xuhaitao";strcpy(filename, op…

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

刘邦夺取天下后&#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:…