reqwest

reqwest 又是一个http的客户端,基本上来说,每一种语言都会开发出http的客户端,这些库好不好用其实是另一回事,有才是关键。

一个简单而强大的 Rust HTTP 客户端。

github的地址在这里。

reqwest 的安装和使用并不复杂,这里介绍下,安装和简单的使用情况。

安装

你可以通过将它加入 Cargo.toml 这种方式简单快速安装 reqwest,同时把 tokio 也添加并安装,因为 reqwest 底层使用了这个异步运行时。

[dependencies]
reqwest = { version = "0.11", features = ["json"] }
tokio = { version = "1", features = ["full"] }

简单使用实例

比如我们想获取我们外网的ip地址,我们可以访问

https://httpbin.org/ip

这个网站,这个网站返回的是json的数据,我们需要对json 进行格式化,获取相应的字段。

代码如下:

use std::collections::HashMap;#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {let resp = reqwest::get("https://httpbin.org/ip").await?.json::<HashMap<String, String>>().await?;println!("{:#?}", resp);Ok(())
}

代码就比较简单,读起来也不会觉得太难,获取数据,并对其进行格式化。

{origin: "32.194.43.24"
}

同样的这里有一个配置选项,blocking 我们可以把它开起来。

[dependencies]
reqwest = { version = "0.11", features = ["blocking", "json"] }

代码就变成这样子:

use std::collections::HashMap;fn main() -> Result<(), Box<dyn std::error::Error>> {let resp = reqwest::blocking::get("https://httpbin.org/ip")?.json::<HashMap<String, String>>()?;println!("{:#?}", resp);Ok(())
}

http 头的设置,同样的也可以在代码中进行:

let mut h = header::HeaderMap::new();h.insert("Accept", header::HeaderValue::from_static("application/json"));let client = reqwest::Client::builder().default_headers(h).build()?;

同样的,还有可以进行其他的一些设置,可以通过这个文档进行参看。

Github每日精选(第68期):HTTP客户端哪家强-reqwest相关推荐

  1. 每日思考第 68 期:如何致富,不靠运气2

    每日思考专栏每周日更新,本期覆盖 20210301~20210307. 本期继续谈谈美国风险投资家 Naval 关于致富的观点. 210301:承担责任 [承担责任] 美国风险投资家 Naval 说: ...

  2. Github每日精选(第56期):支持多语言的文字识别EasyOCR

    EasyOCR EasyOCR一款好用的OCR,支持80多种语言和所有流行的书写脚本,包括拉丁语.汉语.阿拉伯语.德瓦纳加里语.西里尔语等. OCR (Optical Character Recogn ...

  3. Github每日精选(第57期):用于绘制手绘图的虚拟白板excalidraw

    excalidraw 在做ppt的时候,如果我们的图或者是表,用手绘的形式来完成的话,我们的ppt看起来就比较高档了,一个体现了我们的认真做ppt的态度,一个是体现了我们审美的高度. excalidr ...

  4. Github每日精选(第24期):python的浏览器MechanicalSoup

    MechanicalSoup 可能你看到MechanicalSoup,就会想起BeautifulSoup,是的,这两个的功能用起来差不多,只是MechanicalSoup做的更多一点. Mechani ...

  5. Github每日精选(第48期):SQLite下的知识库memos

    memos memos 是一个开源的.自托管的知识库,可与 SQLite db 文件一起使用. 使用SQLite db还是很有必要的,因为有的时候我们需要把我们的日志进行转移,直接把数据库拷走就可以了 ...

  6. Github每日精选(第77期):Go (Golang) 编写的 HTTP Web 框架gin

    Gin Gin 是一个用 Go (Golang) 编写的 Web 框架.由于httprouter,它具有类似 martini 的 API,性能提高了 40 倍.如果您需要性能和良好的生产力,您一定会喜 ...

  7. Github每日精选(第79期):虚拟数据生成库faker

    faker Faker是一个Python包,可以为你生成假数据.无论您是需要引导您的数据库.创建美观的 XML 文档.填写您的持久性以对其进行压力测试,还是对从生产服务中获取的数据进行匿名化,Fake ...

  8. Github每日精选(第75期):colly 爬取网站所有的数据

    colly colly 是一个优雅的 Golang 爬虫框架. colly 提供了一个干净的接口来编写任何类型的爬虫/scraper/spider. 使用 Colly,您可以轻松地从网站中提取结构化数 ...

  9. Github每日精选(第33期):Screenshot-to-code训练 AI 将设计模型转换为 HTML 和 CSS

    Screenshot-to-code Screenshot-to-code 深度学习将改变前端开发.它将增加原型设计速度并降低构建软件的门槛. github上的地址在这里. 当 Tony Beltra ...

最新文章

  1. 无人驾驶急需解决:规划控制和传感器价格高两大问题(附Apollo算法)
  2. Android中Preference的使用以及监听事件分析
  3. java 执行linux命令行_10个高效Linux技巧及Vim命令对比
  4. 理解 Azure 虚拟机的性能监视
  5. [转]密码技术-实现数字信封和数字签名
  6. PyTorch基础(part8)--LSTM
  7. Codeforces Round #FF (Div. 2):Problem A - DZY Loves Hash
  8. 移植oprofile到dm365
  9. 学习指南:零基础java入门教程(入门篇)
  10. ASP.NET在Web窗体上输出九九乘法表
  11. Java编程语言最流行的7个框架介绍
  12. Mac 使用终端彻底格式化U盘
  13. ajax实现JSONP跨域
  14. win10计算机恢复到一天前,win10怎么系统还原到某一时刻 win10系统还原之后会怎么样...
  15. VMware14 kali linux安装教程
  16. 树莓派刷系统(mac)
  17. 【趣味案例】用Python来做一个屏幕录制工具
  18. Ubuntu 截图工具 Flameshot
  19. css画三角形(面试题)
  20. python课程网络多少钱一年_python学费多少?线上python课程一般多少钱?

热门文章

  1. PDF怎么转Word?安利下面这三款软件给你
  2. pytorch-softmax解决分类问题,用fashion-mnist为例子,再走一遍数据获取到模型预测的流程。深度了解分类指标的递进关系
  3. Oracle数据库系统安全加固
  4. 刘芸担任A.O.史密斯明星体验官,直播介绍“斯”家好物
  5. CEO、CFO、COO
  6. Google Chrome动了我的奶酪?
  7. 【安全牛学习笔记】w3af-身份认证
  8. 手把手教你如何玩转插件:通用Mapper和Mybatis generator
  9. 华为imana命令行
  10. java中的modify,modify