在 go 中构建可靠的 api 交互至关重要,可以通过以下手段实现:使用重试机制处理 api 故障或超时。设置请求超时和取消机制以防止无限期等待。利用断路器模式防止对不可用端点的持续尝试。

Go 语言可靠性:如何创建可靠的 API 交互
在现代应用程序中,可靠的 API 交互至关重要。Golang 凭借其内置的并发特性和丰富的库,为构建可靠的 API 解决方案提供了有力的支持。
重试机制可以帮助处理 API 故障或超时。使用 net/http 中的 Client 类型,我们可以设置重试策略:
立即学习“go语言免费学习笔记(深入)”;
import (
"context"
"fmt"
"net/http"
"time"
)
func main() {
// 创建一个 HTTP 客户端
client := http.Client{
Timeout: 10 * time.Second,
}
// 设置重试策略
client.Transport.(*http.Transport).MaxIdleConnsPerHost = 2
client.Transport.(*http.Transport).DisableKeepAlives = false
// 发送请求
req, err := http.NewRequest(http.MethodGet, "https://example.com", nil)
if err != nil {
fmt.Println(err)
return
}
// 使用上下文来限制重试次数和重试间隔
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
defer cancel()
resp, err := client.Do(req.WithContext(ctx))
if err != nil {
fmt.Println(err)
return
}
fmt.Println(resp.StatusCode)
}设置请求超时和取消机制可以防止 API 交互无限期地等待响应。context 包提供了所需的特性:
import (
"context"
"fmt"
"net/http"
"time"
)
func main() {
// 创建一个 HTTP 客户端
client := http.Client{}
// 创建一个带有超时和取消功能的上下文
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// 发送请求
req, err := http.NewRequest(http.MethodGet, "https://example.com", nil)
if err != nil {
fmt.Println(err)
return
}
// 使用上下文发出请求
resp, err := client.Do(req.WithContext(ctx))
if err != nil {
if ctx.Err() == context.Canceled {
fmt.Println("请求已取消")
} else {
fmt.Println(err)
}
return
}
fmt.Println(resp.StatusCode)
}断路器模式可以防止对不可用的 API 端点的持续尝试。golang/sync/atomic 和 errors 包中的功能可以用于实现这个模式:
import (
"context"
"fmt"
"net/http"
"sync/atomic"
"time"
)
type circuitBreaker struct {
open bool
tries int64
fails int64
}
func main() {
// 创建一个 HTTP 客户端
client := http.Client{}
// 创建一个断路器
cb := &circuitBreaker{}
// 发送请求
for i := 0; i < 10; i++ {
resp, err := client.Do(req)
if err != nil {
atomic.AddInt64(&cb.tries, 1)
atomic.AddInt64(&cb.fails, 1)
cb.open = true
} else {
atomic.AddInt64(&cb.tries, 1)
}
if cb.open {
fmt.Println("断路器已打开,请求将不再发送")
break
}
}
}以上就是Golang 可靠性:如何创建可靠的 API 交互的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号