Actix-web 学习笔记索引

2022-09-26

前言

之前使用过 Java 写过简单的 Web 项目。但是在编程过程中,Java 的很多地方并不令人满意,包括不同的编辑器对于 Web 项目的结构和解析不同,以及使用 IDEA 社区版时,会出现编译项目在 Ant 时卡住的情况。所以在犹豫使用其他什么语言写 web 项目的时候,刚开始我选择了 C#,但是 C# 没有非常适合入门的教程(有一个还不错的教程,讲解的非常细,但是太长了,视频地址),而且迭代之后,语法改变很大,特别是当 .net6.0 出现顶级语句之后,Asp.Net 的很多内容和之前不太一样了。

当我一筹莫展的时候,突然想起来 rust。在查找许久之后,发现目前大致有 actix-webaxumrocketpoem四个框架,其他的框架暂时没有过多的了解。axum 官方貌似没有实质的教程,只有文档,不过 axum 中文网提供了一些教程,但是这些教程隐藏或者没有提到一些细节,比如中途增加的 crate 以及分到其他模块的函数功能等,所以并不太适合本人。Rocket 是 rust 比较成熟的 web 框架,但是更新的时间距离现在有点久了,所以就没有考虑了。至于 poem,比较接近底层,而且是我学习 actix-web 之后才知道的,所以也没有考虑了。

这次的学习笔记会记录我学习 actix-web 的过程,可以作为学习 actix-web的参考。

说明

由于是跟随官方的例子学习,所以建立项目的时候会和官方的例子项目结构一致,代码基本一致。

建议将官方的例子克隆到本地进行学习。(地址

本人的理解比较粗俗,偏向于简单理解重于使用。所以很多可能只是为了了解具体的使用,而不是深入了解其概念和原理甚至实现。创建的项目名和官方例子的项目基本一致。

目录

第一部分 基础

  1. Hello world
  2. 异常处理
  3. 状态
  4. 嵌套路由
  5. 静态文件
  6. 综合篇

第二部分 实践

由于大四花了很多时间去完成毕设,所以没有安排时间来写博客。毕设项目采用了前后端分离的设计,后端使用 rustactix-web 框架,主要用于与数据库的连接,并保存用户图像;前端使用 vue 框架实现,主要负责用户界面和后端的交互;数据库使用了 MySql

项目地址:GiteeGithub

其实由之前第一部分的学习可以知道 actix-web 其实可以展示静态网页文件。但是在项目初期时,使用了这种方式,导致前端项目结构过于冗杂,而且对于动态网页动态元素的状态修改等遇到了很多技术问题。这迫使我重新开始项目,将前端和后端分开编写。而且由于前端编写缺少经验,并且没有和后端一样进行过多次项目结构的重构,会存在着很多问题,并且项目结构较为混乱。前端代码中,因为有项目初期编写好但又不想重新编写的一些组件,所以会有看起来不太舒服的 JS 文件。

actix-web学习笔记RustRustactix-web学习笔记

学少何

不求上进的社畜……

1.1 Hello world