豌豆Ai站群搜索引擎系统:www.wd.chat

🗣 SL提问: 短网址生成源码

✍️ 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,并添加适当的错误处理和安全性措施。

英语分析
📢 商家广告

三乐英语

广告招商

月饼

广东过滤器

广告招商

贵阳用友软件

域名抢注

广告招商

高防vps

豌豆Ai站群搜索引擎系统

广告招商

广告招商

广告招商

广告招商

广告招商


0

IP地址: 248.219.100.97

搜索次数: 39

提问时间: 2025-07-12 11:05:33

❓️ 热门提问
ai智能百事通
巨丰贵金属
黄金塘
iexs外汇平台下载
外汇期权市场
ai域名是那个国家
美因基因
东吴黄金金条
任天堂金币有什么用
外汇 短线
豌豆Ai站群搜索引擎系统

🖌 热门作画


🤝 关于我们
三乐Ai 作文批改 英语分析 在线翻译 拍照识图
Ai提问 英语培训 本站流量 联系我们

🗨 加入群聊
群

🔗 友情链接
google优化  搜索引擎导航  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.05.20》搭建本站。

上一篇 347302 347303 347304 下一篇