go短链服务REST API完全参考:捷径的创建、查询、删除与游标分页

📅 2026/8/24 10:20:04
go短链服务REST API完全参考:捷径的创建、查询、删除与游标分页
go短链服务REST API完全参考捷径的创建、查询、删除与游标分页【免费下载链接】goAnother Google-like Go short link service项目地址: https://gitcode.com/gh_mirrors/go8/gogo 短链服务go short link service是一个用 Go 语言编写的 Google 风格内部短链接系统它通过一套简洁的 REST API 提供捷径的创建、查询、删除以及游标分页列表能力。本文带你完整掌握/api/url/与/api/urls/两组核心接口配合 curl 示例快速上手。 快速了解go 短链服务是什么go 服务最初灵感来自 Google 内网在浏览器输入go/bigtable就能跳转到对应页面。这个项目复刻了同样的体验还额外支持自动生成短链类似 go/xxx 的随机短码。数据默认存放在data目录LevelDB默认监听:8067端口可通过--data与--addr命令行参数调整支持 LevelDB 与 Firestore 两种存储后端见 cmd/go/main.go本地启动示例git clone https://gitcode.com/gh_mirrors/go8/go cd go GOPATH$(pwd) go install github.com/kellegous/go bin/go --addr:8067 REST 接口总览所有接口都返回 JSON核心路由注册在internal/web/web.go中方法路径功能POST/api/url/{name}创建或覆盖自定义名称捷径POST/api/url/创建捷径并自动生成短名GET/api/url/{name}查询单个捷径DELETE/api/url/{name}删除捷径GET/api/urls/游标分页列出所有捷径GET/api/config获取服务配置的 host 信息➕ 创建捷径POST /api/url/请求体只需一个字段curl -X POST http://localhost:8067/api/url/bigtable \ -H Content-Type: application/json \ -d {url: http://example.com/bigtable}成功响应结构定义见internal/web/json.go{ ok: true, route: { name: bigtable, url: http://example.com/bigtable, time: 2026-08-23T09:00:00Z } }自动生成短链的捷径不指定名称时服务会用自增 ID 做 base62 编码并加:前缀如:1、:a生成类似http://go.corp/:1的短链curl -X POST http://localhost:8067/api/url/ \ -d {url: http://example.com/a-very-long-url}编码逻辑位于internal/web/api.go的encodeID函数。创建时的校验规则规则失败时的错误请求体必须是合法 JSONinvalid json400url字段必填url required400协议仅限http/https/mailto/ftpinvalid URL400目标不能指向服务自身防重定向死循环重定向环路错误400捷径名不能是保留字name cannot be used400保留名清单api、edit、healthz、links、s、version定义在internal/web/name.go的bannedNames中。 查询捷径GET /api/url/{name}curl http://localhost:8067/api/url/bigtable存在返回200响应结构与创建时一致若服务配置了--host参数还会多一个source_host字段不存在返回404{ok: false, error: Not Found}名称为空返回400{ok: false, error: no name given}️ 删除捷径DELETE /api/url/{name}curl -X DELETE http://localhost:8067/api/url/bigtable成功后返回200{ ok: true }删除是幂等安全的后端直接透传删除操作实现见internal/backend/backend.go的Backend接口。 游标分页列表GET /api/urls/这是管理所有捷径的接口采用游标分页而非页码分页天然避免翻页时数据错位问题。三个查询参数参数默认值说明cursor空上一页响应中的next值为空表示从头开始limit100单页数量范围 1 ~ 10000include-generated-namesfalse是否包含:前缀的自动生成短链分页流程实战# 第 1 页 curl http://localhost:8067/api/urls/?limit2{ ok: true, routes: [ {name: a, url: http://a.com/, time: ...}, {name: b, url: http://b.com/, time: ...} ], next: Zw }把next传给下一次请求即可翻页# 第 2 页 curl http://localhost:8067/api/urls/?limit2cursorZw当next为空字符串时说明已经翻完最后一页。分页机制小细节游标本质是上页最后一条捷径名的 base64 编码服务端从该名称之后继续扫描internal/web/api.go的parseCursor默认跳过:开头的自动生成短链遇到该区间会直接 Seek 跳过参数非法如limit0、cursornot a cursor统一返回400完整的分页测试用例可以参考internal/web/api_test.go中的TestAPIList。⚙️ 统一响应格式与状态码所有响应都有ok布尔字段internal/web/json.go{ ok: false, error: invalid cursor value }状态码常见场景200创建 / 查询 / 删除 / 列表成功400JSON 非法、缺参数、名称保留、游标或 limit 非法404查询不存在的捷径500后端存储错误统一为backend error 相关源码导航API 处理与游标解析internal/web/api.go响应结构体定义internal/web/json.go路由注册与健康检查/healthzinternal/web/web.go捷径名解析与保留名单internal/web/name.goRoute 数据模型urltimeinternal/routes.go存储后端抽象LevelDB / Firestoreinternal/backend/backend.go掌握以上两组接口你就拥有了 go 短链服务的完整 REST 操作能力从创建一条捷径到用游标分页遍历上万条记录。【免费下载链接】goAnother Google-like Go short link service项目地址: https://gitcode.com/gh_mirrors/go8/go创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考