Golang Go语言中的requests请求
Golang Go语言中的requests请求
在学习 golang 的时候,写了一个 http 小工具,类似 python 的 requests。
项目地址: https://github.com/xuanbo/requests
希望大家可以多多支持,谢谢各位道友。
支持
支持
请求方法还有 PATCH HEAD OPTION 之类的建议加一下
谢谢哈
嗯嗯,谢谢建议哈。主要平时就主要用 GET、POST、PUT、DELETE ; PATCH、HEAD、OPTION 不咋用,我后面加上
嘻嘻,3q
很干净。喜欢了。
终于有人造这个轮子了.(:滑稽
插播一个正在用的
parnurzeal/gorequest: GoRequest – Simplified HTTP client ( inspired by nodejs SuperAgent )
https://github.com/parnurzeal/gorequest
写的不错。。。。
只用了标准库,源码也才 200 行,比较适合初学者,有问题也可以自己改~
哈哈
谢谢支持: )
parnurzeal/gorequest 这给功能更强大,而且维护的人多,生产用比较放心:)
简洁漂亮
不能 push 代码上去…
// 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)
}
你要 fork 代码之后,然后提交一个 pull request,我这边再合并过去哈
这种东西等项目需要深度使用的时候,会发现目前没有一个第三方库能胜任的,还是需要自己写
1、重试
2、超时
3、keep-alive
只能说坑很多
这个有重试,超时,更完善: https://github.com/parnurzeal/gorequest
如果大家想使用超时、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)
}
这个库个人不推荐使用,issue 里有个比较严重的问题,不知道修复了没有
请问可以直接拿楼主的代码 嵌入到自己的项目中么?
可以哈,没事的。如果在使用过程中有问题,希望可以反馈下,大家一起完善哈
在Golang(通常简称为Go)中,处理HTTP请求通常使用的是标准库中的net/http
包。这个包提供了强大的功能来发送和接收HTTP请求。
对于发送HTTP请求,你可以使用http.NewRequest
来创建一个新的请求对象,然后使用http.Client
的Do
方法来发送这个请求。以下是一个基本的例子,展示了如何发送一个GET请求:
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
resp, err := http.Get("https://example.com")
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(body))
}
这个例子展示了如何使用http.Get
函数发送一个简单的GET请求,并读取响应体。如果你需要发送POST或其他类型的请求,可以使用http.NewRequest
来指定请求方法和URL,然后设置请求的Header和Body。之后,依然使用http.Client
的Do
方法来发送请求。
net/http
包还提供了处理HTTP服务器的功能,包括路由处理、中间件支持等,这使得Go成为构建高性能HTTP服务和API的理想选择。如果你需要更高级的HTTP客户端功能,如超时控制、重试机制等,可以考虑使用第三方库,如github.com/google/go-httpclient
等。