grequests----golang的requests库
2024-08-28 23:32:20
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
最新文章
- hibernate(五) hibernate一对一关系映射详解
- action 方法的访问
- 【C#】2.算法温故而知新 - 冒泡排序
- 【转】loadrunner场景对性能测试策略的映射
- 【经验】Angularjs 中使用 layDate 日期控件
- 推荐:根据ISBN号查询图书信息的API - 豆瓣API
- MySQL DBA修炼秘籍
- IIC的标准操作函数集(C51)包含C和H文件
- HTML5 RPG游戏示例
- [HMLY]6.iOS Xcode全面剖析
- 老李分享:Web Services 架构 2
- 在JBoss AS7中进行项目部署
- 第40篇 使用Sublime+MarkDown快速写博客
- 第四章 Windows图形界面-上
- 2019.04.10打卡(HTML)
- 牛逼的MySQL,起死回生啊
- 无责任Windows Azure SDK .NET开发入门篇(一):开发前准备工作
- 蜗牛慢慢爬 LeetCode 25. Reverse Nodes in k-Group [Difficulty: Hard]
- log4j.properties 详解与配置步骤总结
- python----openpyxl模块