首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
beego
V2EX  ›  Go

requests for golang

  •  
  •   xinQing · 207 天前 · 2237 次点击
    这是一个创建于 207 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在学习 golang 的时候,写了一个 http 小工具,类似 python 的 requests。

    项目地址: https://github.com/xuanbo/requests

    希望大家可以多多支持,谢谢各位道友。
    24 回复  |  直到 2019-04-25 10:24:44 +08:00
        1
    gowk   207 天前
    支持一波。代码写的不错:)
        2
    uasier   207 天前 via Android
    支持
        3
    jinliming2   207 天前 via iPhone
    支持
    请求方法还有 PATCH HEAD OPTION 之类的建议加一下
        4
    xinQing   207 天前
    @gowk 谢谢哈
        5
    xinQing   207 天前
    @jinliming2 嗯嗯,谢谢建议哈。主要平时就主要用 GET、POST、PUT、DELETE ; PATCH、HEAD、OPTION 不咋用,我后面加上
        6
    xinQing   207 天前
    @uasier 嘻嘻,3q
        7
    kidlj   206 天前
    很干净。喜欢了。
        8
    inframe   206 天前 via Android
    终于有人造这个轮子了.(:滑稽
        9
    newmind   206 天前   ♥ 1
    插播一个正在用的
    parnurzeal/gorequest: GoRequest -- Simplified HTTP client ( inspired by nodejs SuperAgent )
    https://github.com/parnurzeal/gorequest
        10
    abel1989   206 天前
    写的不错。。。。
        11
    xinQing   206 天前
    @kidlj 只用了标准库,源码也才 200 行,比较适合初学者,有问题也可以自己改~
        12
    xinQing   206 天前
    @inframe 哈哈
        13
    xinQing   206 天前
    @abel1989 谢谢支持: )
        14
    xinQing   206 天前
    @newmind parnurzeal/gorequest 这给功能更强大,而且维护的人多,生产用比较放心:)
        15
    Allianzcortex   206 天前 via iPhone
    简洁漂亮
        16
    abel1989   206 天前
    不能 push 代码上去......
        17
    abel1989   206 天前
    // default client
    var defaultClient = Client{}

    func (c *Client) Get(url string) *Client {
    c.url = url
    c.method = http.MethodGet
    return c
    }

    func (c *Client) Post(url string) *Client {
    c.url = url
    c.method = http.MethodPost
    return c
    }

    func (c *Client) Put(url string) *Client {
    c.url = url
    c.method = http.MethodPut
    return c
    }

    func (c *Client) Delete(url string) *Client {
    c.url = url
    c.method = http.MethodDelete
    return c
    }

    // Get: http `GET` 请求
    func Get(url string) *Client {
    return defaultClient.Get(url)
    }

    // Post: http `POST` 请求
    func Post(url string) *Client {
    return defaultClient.Post(url)
    }

    // Put: http `PUT` 请求
    func Put(url string) *Client {
    return defaultClient.Put(url)
    }

    // Delete: http `DELETE` 请求
    func Delete(url string) *Client {
    return defaultClient.Delete(url)
    }
        18
    xinQing   206 天前
    @abel1989 你要 fork 代码之后,然后提交一个 pull request,我这边再合并过去哈
        19
    xkeyideal   206 天前
    这种东西等项目需要深度使用的时候,会发现目前没有一个第三方库能胜任的,还是需要自己写

    1、重试
    2、超时
    3、keep-alive

    只能说坑很多
        20
    xinQing   206 天前
    @xkeyideal 这个有重试,超时,更完善: https://github.com/parnurzeal/gorequest
        21
    xinQing   206 天前
    如果大家想使用超时、KeepAlive 等功能,可以自定义 Client、Transport 替换 http 包 DefaultClient、DefaultTransport。

    func customHttp() {

    client := &http.Client{
    Transport: &Transport
    Timeout: 5 * time.Second,
    }
    text, err := requests.Request("https://github.com/xuanbo", "OPTIONS", client).
    Send().
    Text()
    if err != nil {
    panic(err)
    }
    fmt.Println(text)
    }
        22
    xkeyideal   206 天前
    @xinQing 这个库个人不推荐使用,issue 里有个比较严重的问题,不知道修复了没有
        23
    insert000   206 天前
    请问可以直接拿楼主的代码 嵌入到自己的项目中么?
        24
    xinQing   203 天前
    @insert000 可以哈,没事的。如果在使用过程中有问题,希望可以反馈下,大家一起完善哈
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4121 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 09:09 · PVG 17:09 · LAX 01:09 · JFK 04:09
    ♥ Do have faith in what you're doing.