ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

什么是“go“短链?开源go短链服务(kellegous/go)完整介绍:Google同款思路一次看懂

什么是“go“短链?开源go短链服务(kellegous/go)完整介绍:Google同款思路一次看懂 什么是go短链开源go短链服务(kellegous/go)完整介绍Google同款思路一次看懂【免费下载链接】goAnother Google-like Go short link service项目地址: https://gitcode.com/gh_mirrors/go8/gogo短链是源自 Google 内部的一种短链接系统在浏览器输入go/bigtable页面就会自动跳转到对应的内部地址。开源项目kellegous/go把这个Google同款思路做成了一个可自托管的go 短链服务——既能创建好记的 URL 快捷方式又能一键生成数字短链。本文带新手一次看懂它的原理、3 个核心用法和完整部署步骤 1分钟看懂什么是go短链在 Google 内网任何员工都可以注册一个 URL 快捷方式例如访问go/bigtable就会跳转到 BigTable 数据系统的介绍页。据作者回忆Google 最早的 go 服务就是为了终结无休止的内部 CNAME 申请而写的后来这套模式像传染病一样蔓延——Twitter、Etsy 和许多大厂内部都有类似系统。kellegous/go 就是这样一个开源短链服务用 Go 语言编写名字上也是一种小幽默。它与 Google 原版有一个关键区别✨ 除了自定义快捷方式它还能自动生成短链粘贴任意 URL即可得到一个短小的数字 ID 链接。为什么团队都需要一套 go 短链系统长链接难记难念会议里口述一个超长 URL换成go/deploy-docs就行指向可随时更新短链名称不变后台改一下目标地址即可全员生效免去 DNS 申请不用再为每个内部系统申请 CNAME 记录短链可管理所有快捷方式集中在一个页面里查看、复制、删除go短链服务的 3 个核心用法用法 1创建自定义短链访问go/edit/名称例如go/edit/bigtable在页面输入框里填入目标 URL 保存即可。编辑页面是一个简洁的表单前端源码见 ui/src/EditPage/ 目录下的 CenterForm 组件。用法 2访问短链自动跳转在浏览器输入go/名称服务查找该快捷方式并发起 307 临时重定向核心跳转逻辑在 internal/web/web.go。 贴心设计如果访问的快捷方式不存在服务会自动重定向到编辑页——相当于打错名字 直接创建使用门槛极低。用法 3一键生成数字短链访问根路径go粘贴一个长 URL系统自动生成一个 base62 编码的短 ID以:前缀区分见 internal/web/api.go 中的 encodeID 实现形如go/:a1b2不会与自定义名称冲突。⚠️ 注意以下名称是保留字不能用作短链名定义见 internal/web/name.go保留名称用途apiREST APIedit短链编辑页healthz健康检查links兼容旧路径重定向到首页s静态资源version版本信息快速上手go短链服务安装与启动步骤项目使用 Makefile 管理构建Makefile克隆后三步即可运行git clone https://gitcode.com/gh_mirrors/go8/go cd go make ./bin/go启动后的默认行为配置项默认值对应参数数据目录data--data/path/to/data监听地址:8067--addr:80存储后端leveldb--backendfirestore前端资源React 页面会在make时由 Vite 构建并嵌入二进制最终产物是单个可执行文件部署极其简单 最快 DNS 配置方法可选推荐按官方 README 的 DNS Setup 一节操作在内网 DNS 中添加go.corp.mycompany.com指向服务地址并通过 DHCP 把公司域名加入各机器的搜索域。之后所有人只要在浏览器输入go就直达短链首页输入go/名称直接跳转——体验与 Google 内部完全一致。两种存储后端LevelDB 与 Firestore短链数据通过统一的 Backend 接口读写Get / Put / Del / List / NextID见 internal/backend/backend.go底层支持两种实现LevelDB默认数据全部落在本地data目录零外部依赖适合单机自托管Firestore启动时加--backendfirestore --project你的GCP项目数据存入 Google Cloud适合多实例部署切换只需改一个启动参数代码无需改动 ✅Web 界面与 REST API 一览前端采用React 19 Vite TypeScript源码在 ui/src/包含两个页面编辑页创建/修改短链和链接列表页查看、一键复制、删除。后端同时提供 REST API方便脚本和第三方集成路由注册见 internal/web/web.go接口方法说明/api/url/名称POST创建短链不带名称则自动生成/api/url/名称GET查询短链指向/api/url/名称DELETE删除短链/api/urls/GET列表查询游标分页limit 上限 10000/api/configGET获取当前 host 配置/healthzGET健康检查返回 其他实用开关--admin开启管理端点、--metrics输出 Prometheus 指标、--host指定生成短链时使用的主机名。Docker 一行部署最小化镜像官方 DockerfileDockerfile以scratch为基底镜像里只有一个静态编译的二进制体积小、攻击面小docker run -d --name go \ -p 8067:8067 \ -v $(pwd)/data:/data \ kellegous/go --data/data适合谁用典型场景清单企业/研发团队把部署文档、监控面板、工单系统等常用地址变成go/xxx个人自托管玩家一个二进制 一个数据目录跑在树莓派上毫无压力Go / 全栈学习者架构干净——cmd/go/main.go入口、internal/backend存储抽象、internal/web路由与 API、ui/src前端是很好的学习范本常见问题 FAQ问它和 tinyurl 这类普通短链服务有什么区别go 短链服务同时承担两个角色命名快捷方式go/任意好记的名字 自动生成的数字短链普通短链服务通常只有后者。问8067 端口被占用怎么办启动时加--addr:8080即可改端口。问数据会丢吗LevelDB 模式下数据都在data目录做好该目录的备份即可上量后可切换 Firestore 后端。总结kellegous/go 是一个把Google 同款 go 短链思路开源化的轻量短链服务三行命令启动、单二进制部署、LevelDB/Firestore 双后端既有go/名称的团队快捷方式也有自动生成的数字短链。如果你想在团队里告别超长 URL它就是最省心的开源 go 短链服务选择 ✨【免费下载链接】goAnother Google-like Go short link service项目地址: https://gitcode.com/gh_mirrors/go8/go创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表