Skip to main content

Go 客户端

Go语言HTTP客户端,支持ECC+AES-GCM加密和防重复提交。

特性​

  • ✅ ECC+AES-GCM加密(使用crypto/ecdh和crypto/aes)
  • ✅ 防重复提交
  • ✅ 线程安全
  • ✅ 跨平台(Windows/Linux/macOS)
  • ✅ 零外部依赖(只使用标准库)

快速开始​

1. 定义URL配置​

// app_url.go
package example

import httpclient "path/to/httpclient"

var (
UserLogin = httpclient.NewUrl(
"USER_LOGIN",
"/api/auth/login",
httpclient.POST,
true, // 加密
false, // 不防重复
)

OrderSubmit = httpclient.NewUrl(
"ORDER_SUBMIT",
"/api/order/submit",
httpclient.POST,
true, // 加密
true, // 防重复
)
)

2. 使用客户端​

package main

import (
"fmt"
httpclient "path/to/httpclient"
"path/to/example"
)

func main() {
// 创建客户端
client := httpclient.NewHttpClient(httpclient.HttpClientConfig{
BaseUrl: "https://your-gateway.com",
ClientId: "my-go-app",
})
defer client.Cleanup()

// 登录
result, err := client.Request(example.UserLogin, &httpclient.RequestOptions{
Body: map[string]string{
"username": "user",
"password": "pass",
},
})

if err != nil {
panic(err)
}

fmt.Printf("登录成功: %v\n", result)
}

错误处理​

result, err := client.Request(url, options)
if err != nil {
switch err.Error() {
case "DUPLICATE_REQUEST":
fmt.Println("请求正在处理中")
case "DUPLICATE_SUBMIT":
fmt.Println("服务器检测到重复提交")
default:
fmt.Printf("请求失败: %v\n", err)
}
}

📦 依赖说明​

运行时依赖​

✅ 零外部依赖,仅使用Go标准库:

标准库模块用途
crypto/ecdhECC密钥交换(ECDH)
crypto/aesAES-GCM加密/解密
crypto/cipher加密算法实现
crypto/md5MD5哈希(防重复提交)
net/httpHTTP客户端
encoding/jsonJSON序列化/反序列化
encoding/base64Base64编码/解码
sync并发安全(Map、锁)
strings字符串处理
time时间戳处理

无需安装任何第三方包!

安装​

# 初始化Go模块(如果需要)
go mod init your-project

# 直接使用,无需 go get

版本要求​

  • Go 1.18+(推荐使用最新版本)

注意:crypto/ecdh 模块在 Go 1.20+ 中可用。如果使用较早版本,可能需要使用 crypto/elliptic。

编译​

# Windows
GOOS=windows GOARCH=amd64 go build -o app.exe

# Linux
GOOS=linux GOARCH=amd64 go build -o app

# macOS
GOOS=darwin GOARCH=amd64 go build -o app

📖 框架集成示例​

Gin框架集成​

查看 example/gin/ 目录获取Gin框架集成示例:

  • main.go - Gin应用集成示例
  • README.md - Gin集成说明

包含内容:

  • ✅ Gin中间件集成
  • ✅ 服务类封装
  • ✅ 路由处理器示例
  • ✅ 错误处理示例

运行示例:

cd example/gin
go run main.go