w w w . w d . c h a t
🗣 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

📣 商家广告

广告招商

广告招商

广告招商

广告招商

广告招商

广告招商

🛒 域名购买

热门提问

🌐 域名评估

最新挖掘

🖌 热门作画

🤝 关于我们

🗨 加入群聊
💬选择任意群聊,与同好交流分享

🔗 友情链接

🧰

站长工具

📢

温馨提示

本站所有 ❓️ 问答 由Ai自动创作,内容仅供参考,若有误差请用"联系"里面信息通知我们人工修改或删除。

👉

技术支持

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

上一篇 337479 337480 337481 下一篇