Rust的reqwest:优雅的持久化

·694·2 分钟·
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启动