📅  最后修改于: 2023-12-03 14:46:45.634000             🧑  作者: Mango
URL Shortener 是一种使 URL 地址更短的工具。 Python 有许多第三方库可供使用,让开发者可以轻松构建自己的 URL Shortener。
Flask - 一个轻量级 Web 框架,可用于处理 HTTP 请求和响应。Flask 很适合构建 Web 应用程序,包括 URL Shortener。
pyshorteners - 一个简单易用的 URL 缩短程序库,支持各种在线 URL 缩短服务,例如 Bit.ly、Google、TinyURL 等等。
Redis - 一种高性能的 NoSQL 数据库,可用于快速存储和检索 URL 数据。
下面的代码片段演示了如何使用 Flask 框架构建一个基本的 URL Shortener 应用程序:
from flask import Flask, request, redirect
import pyshorteners
app = Flask(__name__)
s = pyshorteners.Shortener()
@app.route('/', methods=['POST'])
def shorten():
long_url = request.form['long_url']
short_url = s.tinyurl.short(long_url)
return short_url
if __name__ == '__main__':
app.run()
在运行此应用程序之前,需要在终端中安装 Flask 和 pyshorteners:
pip install flask
pip install pyshorteners
然后执行 python app.py
命令,将应用程序运行在本地机器的默认端口上(5000)。
要测试应用程序,可以使用 HTTP POST 请求传递长 URL:
curl -X POST http://localhost:5000 -d "long_url=https://www.google.com"
该应用程序将返回一个缩短的 URL。
为了实现 URL 短链接存储和检索功能,我们可以使用 Redis。下面的代码片段演示了如何使用 Redis 存储和检索短链接:
import redis
class URLShortener:
def __init__(self):
self.redis = redis.Redis(host='localhost', port=6379, db=0)
def get_short_url(self, long_url):
short_url = self.redis.get(long_url)
if short_url is not None:
return short_url.decode('utf-8')
else:
short_url = s.tinyurl.short(long_url)
self.redis.set(long_url, short_url)
return short_url
在这个例子中,我们使用 Redis 存储长 URL 和短 URL 之间的映射关系。 如果存储在 Redis 中的长 URL 已经转换为短 URL,则使用其缓存值。 否则,我们使用 pyshorteners 库将长 URL 转换为短 URL 并将映射关系存储在 Redis 中。