Rust的reqwest:优雅的持久化
AI摘要: 本文介绍了Rust的reqwest库在处理Cookie持久化方面的实现与解决方案。通过分析默认的Jar实现不支持持久化的局限性,以及如何通过适配器模式结合外部库cookie_store::CookieStore和reqwest_cookie_store,实现对CookieStore trait的扩展以支持持久化功能。
其实很无聊,甚至复杂
flowchart TB
T["trait: reqwest::cookie::CookieStore"]
subgraph 实现了 trait 的对象们
A2["Jar\n(默认实现,封装了 cookie_store::CookieStore,屏蔽持久化)"]
C1["CookieStoreMutex\n(适配器,包装 cookie_store::CookieStore,暴露持久化能力)"]
end
subgraph 外部库
B1["cookie_store::CookieStore\n(支持持久化)"]
end
subgraph reqwest
A1["reqwest 使用时可以注入\n任何实现了 CookieStore trait 的对象"]
end
A2 --> T
C1 --> T
A1 --> T
A2 -. 内部封装 .-> B1
C1 --> B1
-
reqwest本身不支持cookie
-
使用Jar默认实现可以支持Cookie
-
但是程序重启之后,Cookie又没了,所以需要持久化
-
持久化需要另外一个库:reqwest_cookie_store, 其同时实现了trait,又封装了cookie_store::CookieStore, 作为一个适配器注入到reqwest中
#技术点滴/rust启动