🗣 Wd提问: 短网址生成源码
🤖 Ai回答: 短网址生成源码
以下是一个简单的短网址生成服务的实现代码,使用Python和Flask框架:
基础版本 (使用内存存储)
python
import hashlib
from flask import Flask, request, redirect
app = Flask(__name__)
存储短网址和原始网址的映射
url_mapping = {}
def generate_short_url(original_url):
使用MD5哈希生成短码
hash_object = hashlib.md5(original_url.encode())
hex_dig = hash_object.hexdigest()
取前8个字符作为短码
return hex_dig[:8]
@app.route('/shorten', methods=['POST'])
def shorten_url():
original_url = request.form.get('url')
if not original_url:
return URL不能为空, 400
生成短网址
short_code = generate_short_url(original_url)
url_mapping[short_code] = original_url
返回短网址 (这里假设服务运行在localhost:5000)
return fhttp://localhost:5000/{short_code}
@app.route('/<short_code')
def redirect_to_original(short_code):
original_url = url_mapping.get(short_code)
if original_url:
return redirect(original_url)
else:
return 短网址不存在, 404
if __name__ == '__main__':
app.run(debug=True)
进阶版本 (使用数据库存储)
python
import hashlib
import sqlite3
from flask import Flask, request, redirect
app = Flask(__name__)
初始化数据库
def init_db():
conn = sqlite3.connect('urls.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS urls
(short_code TEXT PRIMARY KEY, original_url TEXT)''')
conn.commit()
conn.close()
def generate_short_url(original_url):
使用MD5哈希生成短码
hash_object = hashlib.md5(original_url.encode())
hex_dig = hash_object.hexdigest()
取前8个字符作为短码
return hex_dig[:8]
@app.route('/shorten', methods=['POST'])
def shorten_url():
original_url = request.form.get('url')
if not original_url:
return URL不能为空, 400
生成短网址
short_code = generate_short_url(original_url)
存储到数据库
conn = sqlite3.connect('urls.db')
c = conn.cursor()
try:
c.execute(INSERT INTO urls VALUES (?, ?), (short_code, original_url))
conn.commit()
except sqlite3.IntegrityError:
如果短码已存在,直接使用
pass
conn.close()
返回短网址
return fhttp://localhost:5000/{short_code}
@app.route('/<short_code')
def redirect_to_original(short_code):
conn = sqlite3.connect('urls.db')
c = conn.cursor()
c.execute(SELECT original_url FROM urls WHERE short_code=?, (short_code,))
result = c.fetchone()
conn.close()
if result:
return redirect(result[0])
else:
return 短网址不存在, 404
if __name__ == '__main__':
init_db()
app.run(debug=True)
使用说明
1、基础版本使用内存存储映射关系,适合开发和测试
2、进阶版本使用SQLite数据库持久化存储
3、两种版本都提供了两个端点:
`/shorten` (POST): 接收原始URL,返回短网址
`/<short_code`: 访问短网址时重定向到原始URL
如何扩展
1、添加自定义短码功能
2、添加访问统计功能
3、添加过期时间功能
4、添加用户认证和私有短网址功能
5、使用更高效的哈希算法或自增ID生成短码
要运行此代码,需要安装Flask和SQLite:
pip install flask
注意:生产环境中应考虑使用更健壮的数据库如PostgreSQL或MySQL,并添加适当的错误处理和安全性措施。
📣 商家广告 :
👍
0
👎
IP地址: 23.193.133.86
搜索次数: 30
提问时间: 2025-06-29 22:08:19
🛒 域名购买 :
kkky.com.cn 3.ln.cn 82.chat w-p.cn 2111.top nefronet.com aihun.com.cn pai.cx mangwang.com.cn 0-2.com.cn
❓ 热门提问 :
2000年到2025年金价走势图 购买公司网站 黄金回收哪个平台好 与域名查询 怎么学做ai ai学习0基础 ai写作要花钱吗 福建搜索引擎推广 16g金子多少钱 域名查询服务器ip 豌豆Ai站群搜索引擎系统
🌐 域名评估 :
hhlg.cn vtolfair.com hkju.cn su.hk.cn txup.cn axhp.cn kimi.sale sf.jl.cn deepseek.black qsbq.cn
⛏ 最新挖掘 :
挖掘机 AI写作文提升 AI写作文润色 AI写作文评语 AI写作文批改 AI写作文助手 AI写作文范文 AI写作文模板
🖌 热门作画 :
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
联系
🗨 加入群聊 :
🔗 友情链接 :
手机常用软件
台灣搜尋引擎
ai提问
🧰 站长工具 :Ai工具 whois查询 搜索
📢 温馨提示 :本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持 :本站由豌豆Ai 提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。