grequests----golang的requests库
github.com/levigross/grequests:
A Go "clone" of the great and famous Requests library
特点:
- 响应可以序列化为JSON和XML
- 轻松上传文件
- 轻松下载文件
- 支持以下HTTP请求方式:GET,HEAD,POST,PUT,DELETE,PATCH,OPTIONS
安装:
go get -u github.com/levigross/grequests
导入:
import "github.com/levigross/grequests"
GET请求:
func req() {
res, err := grequests.Get("http://www.baidu.com", nil)
if err != nil{
log.Fatalln("Unable to make request: ", err)
}
fmt.Println(res) // 返回Response, 包括了RawResponse,StatusCode,Header...等等
//源码部分
//func buildResponse(resp *http.Response, err error) (*Response, error) {
// // If the connection didn't succeed we just return a blank response
// if err != nil {
// return &Response{Error: err}, err
// }
//
// goodResp := &Response{
// // If your code is within the 2xx range – the response is considered `Ok`
// Ok: resp.StatusCode >= 200 && resp.StatusCode < 300,
// Error: nil,
// RawResponse: resp,
// StatusCode: resp.StatusCode,
// Header: resp.Header,
// internalByteBuffer: bytes.NewBuffer([]byte{}),
// }
// // EnsureResponseFinalized(goodResp) This will come back in 1.0
// return goodResp, nil
fmt.Println(res.StatusCode)
fmt.Println(res.Error) //Response如果没有错误,Error为nil
fmt.Println(res.Header) //
fmt.Println(res.Ok) // 返回bool值,用于验证返回的状态码是否是 2xx系列
fmt.Println(res.RawResponse) // 返回http.Response,包括了很多东西,可以看源码
//源码部分
//type Response struct {
// Status string // e.g. "200 OK"
// StatusCode int // e.g. 200
// Proto string // e.g. "HTTP/1.0"
// ProtoMajor int // e.g. 1
// ProtoMinor int // e.g. 0
// Header Header
// Body io.ReadCloser
// ContentLength int64
// TransferEncoding []string
// Close bool
// Uncompressed bool.
// Trailer Header
// Request *Request
// TLS *tls.ConnectionState
//}
fmt.Println(res.DownloadToFile("baidu.html")) // DownloadToFile允许您将响应的内容下载到文件中
fmt.Println(res.JSON()) // JSON是一种方法,它将使用响应主体中返回的JSON填充“userStruct”提供的结构(解析数据)
fmt.Println(res.XML()) //XML是一种方法,它将使用响应主体中返回的XML填充“userStruct”提供的结构,
fmt.Println(res.Bytes()) // 字节以字节数组的方式返回
res.ClearInternalBuffer //ClearInternalBuffer是一个清除我们用来保存.String()和.Bytes()数据的内部缓冲区的函数。一旦使用了这些功能 - 您可能想要释放内存。 n, err := res.Read() //如果有人想要使用原始数据,那么read是我们支持io.ReadCloser的能力的一部分
res.Close() //如果有人想要使用原始数据,关闭是我们支持io.ReadCloser的能力的一部分
}
其他可以看文档:https://godoc.org/github.com/levigross/grequests
github地址:https://github.com/levigross/grequests
grequests----golang的requests库的更多相关文章
- Golang实现requests库
Golang实现requests库 简单的封装下,方便使用,像python的requests库一样. Github地址 Github 支持 GET.POST.PUT.DELETE applicatio ...
- 异步请求Python库 grequests的应用和与requests库的响应速度的比较
requests库是python一个优秀的HTTP库,使用它可以非常简单地执行HTTP的各种操作,例如GET.POST等.不过,这个库所执行的网络请求都是同步了,即cpu发出请求指令后,IO执行发送和 ...
- Python爬虫小白入门(二)requests库
一.前言 为什么要先说Requests库呢,因为这是个功能很强大的网络请求库,可以实现跟浏览器一样发送各种HTTP请求来获取网站的数据.网络上的模块.库.包指的都是同一种东西,所以后文中可能会在不同地 ...
- Requests库上传文件时UnicodeDecodeError: 'ascii' codec can't decode byte错误解析
在使用Request上传文件的时候碰到如下错误提示: 2013-12-20 20:51:09,235 __main__ ERROR 'ascii' codec can't decode byte 0x ...
- Requests库的几种请求 - 通过API操作Github
本文内容来源:https://www.dataquest.io/mission/117/working-with-apis 本文的数据来源:https://en.wikipedia.org/wiki/ ...
- python脚本实例002- 利用requests库实现应用登录
#! /usr/bin/python # coding:utf-8 #导入requests库 import requests #获取会话 s = requests.session() #创建登录数据 ...
- 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。
python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url ...
- python WEB接口自动化测试之requests库详解
由于web接口自动化测试需要用到python的第三方库--requests库,运用requests库可以模拟发送http请求,再结合unittest测试框架,就能完成web接口自动化测试. 所以笔者今 ...
- python爬虫从入门到放弃(四)之 Requests库的基本使用
什么是Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库如果你看过上篇文章关于urllib库的使用,你会发现,其 ...
- (转)Python爬虫利器一之Requests库的用法
官方文档 以下内容大多来自于官方文档,本文进行了一些修改和总结.要了解更多可以参考 官方文档 安装 利用 pip 安装 $ pip install requests 或者利用 easy_install ...
随机推荐
- Asp.Net Core 进阶(二) —— 集成Log4net
Asp.Net Core 支持适用于各种内置日志记录API,同时也支持其他第三方日志记录.在我们新建项目后,在Program 文件入口调用了CreateDefaultBuilder,该操作默认将添加以 ...
- HDU-2544-最短路(floyd)
板子题,实验一下floyd. #include <cstdio> #include <algorithm> #include <cstring> using nam ...
- mysqldump 备份导出数据排除某张表或多张表
可以使用--ignore-table=dbname.tablename 忽略一张表 /usr/bin/mysqldump --set-gtid-purged=OFF -h127.0.0.1 -uroo ...
- NFS基础优化
一.环境 环境接上篇 https://www.cnblogs.com/suffergtf/p/9486250.html 二.参数详解 1.nfsserver端配置参数详解 [root@nfsserve ...
- proto_ops和proto区别
**proto_ops:**该结构体包含了某个特定的"protocol family"的一系列functions. 其包含的functions和struct proto很类似,但是 ...
- Python contenttypes组件
介绍 Django包含一个contenttypes应用程序(app),可以跟踪Django项目中安装的所有模型(Model),提供用于处理模型的高级通用接口. Contenttypes应用的核心是Co ...
- MySQL 之Navicat Premium 12安装使用、pymysql模块使用、sql注入问题的产生与解决
本文内容提要: Navicat Premium 12 的介绍.使用. pymysql模块的使用 sql注入问题的产生与解决 -------------------------------------- ...
- pyhton链式赋值在可变类型/不可变类型上的区别以及其本质
关于链式赋值的一些注意点: a=[]b=[]x=y=[]print(a==b) #Trueprint(x==y) #Trueprint(a is b) #Falseprint(x is y) #Tru ...
- HashMap图解
HashMap的数据结构和put.get.resize等操作的图解,看图轻松掌握HashMap (目前还不包括红黑树相关的部分) HashMap数据结构如下图 HashMap之put操作如下图 Has ...
- PAT Basic 1038
1038 统计同成绩学生 本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第1行给出不超过10^5^的正整数N,即学生总人数.随后1行给出N名学生的百分制整数成绩,中 ...