安装包
使用 go get 将 SDK 添加到您的 Go 模块。
go get github.com/lix-url/go-sdk/lix
Lix.li URL 缩短和链接分析 API 官方 Go SDK。零外部依赖。使用惯用的 Go、结构体、错误和可选指针类型创建短链接、管理分组并跟踪点击。
package main import ( "fmt" "log" "github.com/lix-url/go-sdk/lix" ) func main() { client := lix.NewClient("lix_live_xxx") result, err := client.Links().Create("https://example.com", nil) if err != nil { log.Fatal(err) } fmt.Println(result.Link.ShortURL) // https://lix.li/a3b7k2 fmt.Println(result.Usage.Remaining) // 42 }
仅用标准库构建,零外部依赖。为惯用的 Go,具有结构体、错误和可选指针类型。
创建、获取、更新、删除和列出短链接。具有定型结构体的完整 CRUD。用于可空字段的可选指针类型。
将链接组织成组。创建旋转分组进行网页 A/B 测试。具有结构体响应的完整 CRUD。
检索帐户个人资料、计划详情和实时使用限制。
仅标准库。没有外部依赖。小尺寸、零供应链风险。
6 个专用错误类型包裹基本的 LixError。使用 errors.As() 进行精确的错误匹配并附有验证数据。
通过 HTTPClient 接口注入任何与 net/http 兼容的客户端。设置超时、代理或模拟测试。
纯 Go,没有外部依赖。与从 Go 1.22+ 的标准库一起使用。
使用 go get 将 SDK 添加到您的 Go 模块。
go get github.com/lix-url/go-sdk/lix
传入您的 API 密钥。可选注入自定义 HTTPClient 以进行超时、代理或测试。
import "github.com/lix-url/go-sdk/lix" client := lix.NewClient("lix_live_xxx") // With custom HTTPClient httpClient := &http.Client{Timeout: 10 * time.Second} client := lix.NewClient("lix_live_xxx", httpClient)
缩短 URL 并获取带有短链接和使用信息的定型 LinkShortenResult。
使用自定义别名、UTM 参数、跟踪像素、密码保护和过期日期创建短链接。每次操作都返回定型的结构体。
// Create a basic link result, err := client.Links().Create("https://example.com", nil) fmt.Println(result.Link.ShortURL) // With custom alias and UTM opts := lix.NewCreateLinkOptions() opts.Alias = strPtr("my-link") opts.Title = strPtr("My Page Title") opts.Tags = []string{"sale", "promo"} opts.UTM = map[string]string{ "utm_source": "google", "utm_medium": "email", "utm_campaign": "summer", } opts.TrackingPixelIDs = []int{1001, 1002} opts.IsPublic = true result, err := client.Links().Create("https://example.com", opts) // Password protection + expiration opts := lix.NewCreateLinkOptions() opts.Password = strPtr("secret123") opts.ActiveBeforeDatetime = strPtr("2026-12-31T23:59:59+00:00") result, err := client.Links().Create("https://example.com", opts) func strPtr(s string) *string { return &s }
分页示例:
client.Links().List(&limit, &fromID)
返回下一批结果带有 ResponseMeta,其中包含总数和下一个 URL。对于 API 默认值传递 nil。
分组有助于按营销活动、团队或项目对链接进行分类。旋转组通过在多个链接之间分配流量来实现 A/B 测试。
// Create a regular group group, err := client.Groups().Create("Marketing", nil, false) fmt.Println(group.Name, group.URL) // Create a rotating group for A/B testing group, err := client.Groups().Create( "Landing Pages", strPtr("Rotating pages"), true, ) // Update group group, err := client.Groups().Update( 10, nil, strPtr("Updated description"), false, ) // List with pagination limit := 10 page, err := client.Groups().List(&limit, nil) for _, g := range page.Groups { fmt.Println(g.Name, g.URL) } fmt.Println(page.Meta.Total)
检索您的个人资料、计划和实时使用限制 — 一切都返回为嵌套结构体并具有完整的 JSON 标签映射。
profile, err := client.Profile().Me() if err != nil { log.Fatal(err) } // Account info fmt.Println(profile.Client.Name, profile.Client.Email) fmt.Println(profile.User.Email) // Plan details fmt.Println(profile.Plan.Name, profile.Plan.EndDatetime) // Usage limits if profile.Usages.Links.Remaining != nil { fmt.Println(*profile.Usages.Links.Remaining) } fmt.Println(profile.Usages.APILinks.Used) fmt.Println(profile.Usages.MassLinks.Limit)
ID、名称、电子邮件、created_datetime
名称、电子邮件、created_datetime
ID、名称、start_datetime、end_datetime
链接、API、大批量 — 每个具有 Limit (*int)、Used (int)、Remaining (*int)
使用 errors.As() 精确捕获您所需的内容。所有错误都包裹 LixError。ValidationError 将完整的字段级验证错误数据包含在 Data 中。
import "errors" result, err := client.Links().Create("invalid-url", nil) if err != nil { var ve *lix.ValidationError var notFound *lix.NotFoundException var unauth *lix.UnauthorizedError var rateLimit *lix.RateLimitError var server *lix.ServerError switch { case errors.As(err, &ve): // Field-level validation errors fmt.Println("Validation:", ve.Data) case errors.As(err, ¬Found): fmt.Println("Not found") case errors.As(err, &unauth): // Invalid API key case errors.As(err, &rateLimit): // Too many requests case errors.As(err, &server): // 5xx server error default: // Generic Lix or network error log.Fatal(err) } }
400 — 无效输入。访问 Data 以获取字段错误。
401 — 无效的 API 密钥或缺少授权。
404 — 未找到链接或组。
429 — 超出速率限制。
500 — 意外的服务器错误。
网络 / 传输故障。
所有错误都包裹 LixError,其实现了 error。使用 errors.As() 进行类型安全匹配。捕获基本 LixError 以处理任何 SDK 错误,或定位特定类型进行精细处理。
从 PHP、JavaScript、Python 或 Go 使用相同的 Lix.li API,配备为每个生态系统量身定制的 SDK。