Golang Go语言中的requests请求

Golang Go语言中的requests请求
在学习 golang 的时候,写了一个 http 小工具,类似 python 的 requests。

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

希望大家可以多多支持,谢谢各位道友。

25 回复

支持一波。代码写的不错:)

更多关于Golang Go语言中的requests请求的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


支持
请求方法还有 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.ClientDo方法来发送这个请求。以下是一个基本的例子,展示了如何发送一个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.ClientDo方法来发送请求。

net/http包还提供了处理HTTP服务器的功能,包括路由处理、中间件支持等,这使得Go成为构建高性能HTTP服务和API的理想选择。如果你需要更高级的HTTP客户端功能,如超时控制、重试机制等,可以考虑使用第三方库,如github.com/google/go-httpclient等。

回到顶部