grequests----golang的requests库
Posted zhzhlong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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库的主要内容,如果未能解决你的问题,请参考以下文章
python_reques接口测试框架,Excel作为案例数据源
Jenkins出现No valid crumb was included in the reques