一个完整的“短链接”服务,可立即对外运营
软件名称:ShortURL-codong 软件分类:Web应用 / 工具软件 开发语言:Codong 授权协议:MIT 在线演示:https://codong.org/short-url/ 代码仓库:https://github.com/brettinhere/ShortURL-codong 说明: ShortURL-codong 是一个用 Codong 语言编写的开源短链接服务,完整后端逻辑仅 42 行代码,无任何第三方框架依赖。 完整功能:URL缩短、301跳转、点击统计。无需框架、无需ORM、开箱即用。一行命令安装 Codong,一行命令启动服务,立即可对外提供短链接运营服务。内置完整SEO配置,支持中英双语。MIT协议开源。 核心功能: • 长链接一键缩短,生成 6 位随机码短链 • 短链 301 跳转,对 SEO 友好 • 点击次数统计接口 • 前端页面支持中英文切换 • 内置 robots.txt、sitemap.xml、Schema.org 结构化数据等完整 SEO 配置 作为开发者,你一定遇到过这种场景: 需要一个短链接服务。不是很复杂的需求,就是把长 URL 变短,能跳转,最好能看看点击数。 然后你开始选技术栈。Python?要装 Flask、SQLAlchemy,写 ORM model,配 session,折腾 virtualenv。Node?npm install express better-sqlite3,再写一堆中间件。Go?相对干净,但光是类型定义、json encode/decode 的样板代码就要写几十行。 折腾半天,功能还没写,配置文件已经一堆了。 今天介绍一个不一样的方案:ShortURL-codong,一个用 Codong 语言写的开源短链接服务,后端核心逻辑 42 行,零依赖,三行命令跑起来。 先跑起来,再说别的 # 第一步:装 Codong(一行搞定) curl -fsSL https://codong.org/install.sh * sh # 第二步:拉代码 git clone https://github.com/brettinhere/ShortURL-codong cd ShortURL-codong # 第三步:跑起来 codong run main.cod # shorturl listening on :8082 就这三步。数据库自动创建,端口自动监听,服务已经在跑了。 验证一下: curl -X POST http://localhost:8082/api/shorten \ -H "Content-Type: application/json" \ -d '{"url": "https://你的超长链接.com/很长很长的路径"}' # 返回 {"code":"x7k2mq","short_url":"http://localhost:8082/s/x7k2mq"} 访问 http://localhost:8082/s/x7k2mq,301 直接跳转到原始 URL。 从 git clone 到短链接服务对外可用,不超过 2 分钟。 你的用户马上就能用 服务跑起来之后,前端页面直接可用——访问 http://localhost:8082/short-url/ 就是一个干净的短链接生成界面,支持中英文切换,不需要额外部署任何前端工程。 用户进来,粘贴链接,点生成,复制短链,走人。三秒钟的事。 加一层 nginx 反向代理配上自己的域名,5分钟内就能把这个服务交给真实用户使用。 42 行代码到底长什么样 这是完整的后端逻辑,一行没省: import { generate_id, is_valid_url } from "./lib/url_utils.cod" db.connect("sqlite://shorturl.db") db.exec(""" CREATE TABLE IF NOT EXISTS urls ( code TEXT PRIMARY KEY, long_url TEXT NOT NULL, hits INTEGER DEFAULT 0, created_at TEXT DEFAULT (datetime('now')) ) """) server = web.serve(port: 8082) server.post("/api/shorten", fn(req) { body = req.json() if !is_valid_url(body.url) { return {status: 400, body: {error: "invalid url"}} } code = generate_id(6) db.exec("INSERT INTO urls (code, long_url) VALUES (?, ?)", code, body.url) return {status: 200, body: { code: code, short_url: "https://codong.org/s/{code}", }} }) server.get("/s/:code", fn(req) { row = db.find_one("SELECT long_url FROM urls WHERE code = ?", req.params.code) if row == null { return {status: 404, body: {error: "not found"}} } db.exec("UPDATE urls SET hits = hits + 1 WHERE code = ?", req.params.code) return {status: 301, headers: {"Location": row.long_url}} }) server.get("/api/stats/:code", fn(req) { row = db.find_one("SELECT * FROM urls WHERE code = ?", req.params.code) if row == null { return {status: 404, body: {error: "not found"}} } return {status: 200, body: row} }) server.listen() 不需要 import ,也不需要 class 定义,不需要 if err != nil 重复三十遍。db 和 web 是 Codong 的内置模块,直接用,不需要安装。 路由处理函数返回一个 map,status、body、headers 想写什么写什么,框架帮你翻译成 HTTP 响应。 这就是 Codong 的核心设计理念:语言本身承担基础设施,你只写业务。 连 SEO 都帮你配好了 很多开发者自部署工具类服务,上线之后发现搜索引擎根本找不到,也没有社交分享预览。这个项目把这块也做了: • robots.txt 明确允许 GPTBot、Claude、Perplexity 抓取 • sitemap.xml 含中英文 hreflang 标注 • Open Graph 标签,微信/Twitter/LinkedIn 分享有预览图 • Schema.org FAQPage 结构化数据,直接被 AI 搜索(Perplexity、ChatGPT search)抓取作为答案来源