可能是最像 requests 的 Golang 网络请求库 - V2EX
2019-12-04 22:38:53 Author: www.v2ex.com(查看原文) 阅读量:392 收藏

sreq 是一个简单、易用以及并发安全的 Golang 网络请求库,灵感来自 Python requestssreq 提供了 requests 风格的 API,让你可以像使用 requests 那样轻松高效地使用 net/http

发送请求

  • requests
resp = requests.get('http://httpbin.org/get')
  • sreq
resp := sreq.Get("http://httpbin.org/get")

传递 URL 参数

  • requests
payload = {
    'key1': 'value1',
    'key2': 'value2',
}
resp = requests.get('http://httpbin.org/get', params=payload)
  • sreq
payload := sreq.Params{
    "key1": "value1",
    "key2": "value2",
}
resp := sreq.Get("http://httpbin.org/get", sreq.WithQuery(payload))

响应内容

  • requests
data = requests.get('http://httpbin.org/get').text
  • sreq
// ignore error
data, _ := sreq.Get("http://httpbin.org/get").Text()

二进制响应内容

  • requests
data = requests.get('http://httpbin.org/get').content
  • sreq
// ignore error
data, _ := sreq.Get("http://httpbin.org/get").Content()

JSON 响应内容

  • requests
data = requests.get('http://httpbin.org/get').json()
  • sreq
data := make(map[string]interface{})
// ignore error
_ = sreq.Get("http://httpbin.org/get").JSON(&data)

原始响应内容

  • requests
data = requests.get('http://httpbin.org/get', stream=True).raw
  • sreq
// ignore error
data, _ := sreq.Get("http://httpbin.org/get").Raw()

定制请求头

  • requests
headers = {
    'Referer': 'https://www.google.com',
}
resp = requests.get('http://httpbin.org/get', headers=headers)
  • sreq
headers := sreq.Headers{
    "Referer": "https://www.google.com",
}
resp := sreq.Get("http://httpbin.org/get", sreq.WithHeaders(headers))

更加复杂的 POST 请求

  • requests
payload = {
    'key1': 'value1',
    'key2': 'value2',
}
resp = requests.post('http://httpbin.org/post', data=payload)
  • sreq
payload := sreq.Form{
    "key1": "value1",
    "key2": "value2",
}
resp := sreq.Post("http://httpbin.org/post", sreq.WithForm(payload))

上传文件

  • requests
files = {
    'file': open('report.xls', 'rb'),
}
resp = requests.post('http://httpbin.org/post', files=files)
  • sreq
files := sreq.Files{
    "file": "report.xls",
}
resp := sreq.Post("http://httpbin.org/post", sreq.WithFiles(files))

发送 Cookies

  • requests
cookies = {
    'name1': 'value1',
}
resp = requests.get("http://httpbin.org/get", cookies=cookies)
  • sreq
cookie := &http.Cookie{
    Name:  "name1",
    Value: "value1",
}
resp := sreq.Get("http://httpbin.org/get", sreq.WithCookies(cookie))

响应 Cookies

  • requests
cookies = requests.get('https://www.xiami.com').cookies
  • sreq
// ignore error
cookies, _ := sreq.
    Get("https://www.xiami.com").
    Cookies()

更多用法可参阅:中文 Wiki 或者 API 文档

备注:sreq 不提供后向兼容保证,推荐在个人项目中使用。


文章来源: https://www.v2ex.com/t/626027#reply0
如有侵权请联系:admin#unsafe.sh