reqwest 0.11.4 学习
以应用为主, 在实践中体验 rust 的强大和快捷。
首先以 Web 开发
为主题,学习一个强大的 HTTP 客户端库 reqwest
。
Crate reqwest
介绍
单元包 reqwest
提供了一个便捷和高级别的 HTTP Client
。
该包处理了大多数人期望的一个 HTTP Client 可以替他们做的很多事情 。
- Async 和
blocking
客户端 - 纯文本 ( Plain Bodies ), JSON, urlencoded, multipart
- 可自定义的
redirect policy
- HTTP
Proxies
- 使用系统本地 tls ( system-native TLS )
- Cookies
模块
reqwest
单元包包含以下模块 ( modules ):
- blocking
- cookie
- header
- multipart
- redirect
函数
在 reqwest
中(非子模块下)仅有一个公有函数 get
, 异步请求.
可选特征 Optional Features
若仅在 Cargo.toml 中做如下配置:
[dependencies]
reqwest = { version = "0.11", features = ["json"] }
则说明在使用 reqwest
时仅仅启用了 json
相关的功能模块.
诸如 cookies
, socks
等特征需要手动添加,否则使用不了 reqwest
的未启用特征的相关模块.
常用特征如下:
native-tls
启用 TLS 功能rustls-tls
通过该 rustls 启用 TLS 功能blocking
提供 blocking 客户端 APIcookies
提供 cookie session 支持gzip
对响应 BODY 启用 gzip 解压功能deflate
对响应 BODY 启用 deflate 解压json
对 JSON BODY 启用序列化和反序列化multipart
提供 multipart forms 支持stream
futures::Stream 支持socks
提供 SOCKS5 代理支持rust-dns
启用受信任 DNS 异步解析而非使用 getaddrinfo 的默认线程池
应用 reqwest
接下来结合 reqwest
和 其提供的modules
做案例应用.