当前位置: 移动技术网 > IT编程>脚本编程>Go语言 > Golang实现requests库

Golang实现requests库

2019年04月12日  | 移动技术网IT编程  | 我要评论

golang实现requests库

简单的封装下,方便使用,像python的requests库一样。

github地址

github

支持

  • getpostputdelete
  • application/jsonapplication/x-www-form-urlencoded

不支持:

  • multipart/form-data

使用

下面是常用的例子,get请求;post表单提交、json提交,保存文件等。

get

func gettext() {
    text, err := requests.get("http://127.0.0.1:8080/ping").
        params(url.values{
            "param1": {"value1"},
            "param2": {"123"},
        }).
        send().
        text()
    if err != nil {
        panic(err)
    }
    fmt.println(text)
}

get请求一般需要传递query string,如下:

get http://127.0.0.1:8080/ping?param1=value1&param2=123 http/1.1

post form

func postform() {
    text, err := requests.post("http://127.0.0.1:8080/ping").
        params(url.values{
            "param1": {"value1"},
            "param2": {"123"},
        }).
        form(url.values{
            "form1": {"value1"},
            "form2": {"123"},
        }).
        send().
        text()
    if err != nil {
        panic(err)
    }
    fmt.println(text)
}

post表单提交,需要在请求体中放入表单参数:

post http://127.0.0.1:8080/ping?param1=value1&param2=123 http/1.1
content-type: application/x-www-form-urlencoded

form1=value1&form2=123

post json

func postjson() {
    text, err := requests.post("http://127.0.0.1:8080/ping").
        params(url.values{
            "param1": {"value1"},
            "param2": {"123"},
        }).
        json(map[string]interface{}{
            "json1": "value1",
            "json2": 2,
        }).
        send().
        text()
    if err != nil {
        panic(err)
    }
    fmt.println(text)
}

post json请求需要在请求体中放入json字符串:

post http://127.0.0.1:8080/ping?param1=value1&param2=123 http/1.1
content-type: application/json

{"json1": "value1", "json2": 2}

保存文件

func save() {
    err := requests.get("https://github.com/xuanbo/requests").
        send().
        save("./requests.html")
    if err != nil {
        panic(err)
    }
}

实现思路

主要是通过golang的标准库http去发送请求,下面是伪码:

// 1.创建请求
req, err := http.newrequest(method, url, strings.newreader(body))

// 2.设置请求头
req.header

// 3.发送请求
resp, err:= http.defaultclient.do(req)

// 4.处理响应
r.resp.body

说明

just for fun!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网