Pingora快速入门教程1之总览
Pingora
一直是我比较期待的项目,所以写个入门系列教程吧。之前研究过一些其他产品,比如nginx
, nginx-ingress
, apisix
, bfe
等, 前三者植入业务基本靠lua
或者说openresty
而bfe
的社区实在是一言难尽, 所以我认为Pingora
会成为Rust的明星项目,虽然没达到预期,但至少提供了一个框架,一个社区。
Pingora
一直是我比较期待的项目,所以写个入门系列教程吧。之前研究过一些其他产品,比如nginx
, nginx-ingress
, apisix
, bfe
等, 前三者植入业务基本靠lua
或者说openresty
而bfe
的社区实在是一言难尽, 所以我认为Pingora
会成为Rust的明星项目,虽然没达到预期,但至少提供了一个框架,一个社区。
本文主要是对之前reqwest
库的一个简单的扩展,通过写一个简单的爬虫项目来练习练习Rust, 爬虫有用也有趣,但是不要给目标网站造成过大的压力,否则可能会触犯法律,切记切记。
几乎所有编程语言都是支持命令行库, Rust自然也不例外, 不过Rust标准库不支持,而是第三方库支持,比较常用和主流的是Clap
这个库, 通过它可以很简单的组建自己的命令行工具,这样就不用花太多时间放在参数处理上了。
Rust作为一门通用编程语言,系统级的编程语言写个端口扫描器并不是太复杂,所以本文也会将太多的精力放在怎么扫描上,而是更多的时间放在如何利用Rust快速的扫描和探测端口,即尽可能高并发的完成这个任务,本文从单线程到多线程,最后到异步,算是一个练手项目吧。
虚假的全栈开发,前端后端分离然后分别使用不同的编程语言来开发前后端,真实的全栈开发,前后端全用Rust编程语言,无需打开两个项目分别维护,本文使用的技术栈是Leptos
, tailwindcss
, trunk
。
Rust支持两种宏,一种是声明宏,一种是过程宏,前者相较于后者还是比较简单的。本文主要是讲解Rust元编程里的声明宏,通过声明宏可以减少一些样板代码,它是一个用代码生成代码的技术。
编程过程中有许多类型的数据要处理,其中文本处理必不可少,本文主要是记录在使用Rust开发的过程中处理文本相关数据的一些代码,而文本可以分为结构化和非结构化的文本,比如JSON和小说文本(没有固定格式的文本)。
本文主要讨论axum
的测试,axum
对于测试的支持还是比较完善的,我们可以测试状态码,HTTP头信息,响应体等内容,因为框架实现的原因,其实axum
很依赖tower
。
本文主要讨论axum
的中间件,这也是axum
与其他rust web框架极大的不同点,其他框架都定义了自己的接口,而axum
直接使用tower
的Servvice
和layer
的概念, 而tower
已经存在一大堆通用的中间件了,所以axum
也就自带了一大堆开箱即用的中间件。
本系列文章主要是用Rust
的ethers-rs
来复刻《用Go来做以太坊开发》这本书本的内容,所以本系列文章的标题叫做《用Rust来做以太坊开发》, 因为原书写得足够好了,所以本系列更多的只是代码层面的复刻,不会说明太多相关的基础知识。