github.com/levigross/grequests:

A Go "clone" of the great and famous Requests library

特点:

  1. 响应可以序列化为JSON和XML
  2. 轻松上传文件
  3. 轻松下载文件
  4. 支持以下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

最新文章

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

热门文章

  1. activiti整合开发实例总结
  2. Bootstrap 网格系统(Grid System)实例3
  3. js的工厂模式
  4. python3.x中的33个保留字
  5. js中小数精度问题
  6. js解析器
  7. VC++中char和TCHAR之间转换
  8. ajax以及文件上传的几种方式
  9. Cocos2D 添加 UIView
  10. vmware 装 puppy