📜  Python的URL Shortener 及其 API |组 1(1)

📅  最后修改于: 2023-12-03 14:46:45.634000             🧑  作者: Mango

Python的URL Shortener 及其 API

URL Shortener 是一种使 URL 地址更短的工具。 Python 有许多第三方库可供使用,让开发者可以轻松构建自己的 URL Shortener。

常用的第三方库
  • Flask - 一个轻量级 Web 框架,可用于处理 HTTP 请求和响应。Flask 很适合构建 Web 应用程序,包括 URL Shortener。

  • pyshorteners - 一个简单易用的 URL 缩短程序库,支持各种在线 URL 缩短服务,例如 Bit.ly、Google、TinyURL 等等。

  • Redis - 一种高性能的 NoSQL 数据库,可用于快速存储和检索 URL 数据。

Flask 应用

下面的代码片段演示了如何使用 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。

Redis 实现

为了实现 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 中。