软件名称: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)抓取作为答案来源