📜  如何在 python 中制作 url 缩短器(1)

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

如何在 Python 中制作 URL 缩短器

在 web 应用程序中,常常需要将较长的 URL 地址转化为短地址。本文将介绍如何使用 Python 制作一个 URL 缩短器。

如何工作

URL 缩短器背后的主要原理是将原始 URL 转化为一个较短的字符串。转化方法有很多,但最常用的是使用散列函数。散列函数可以将任意长度的数据映射为固定长度的输出,通常为一个 32 位无符号整数。我们可以将这个整数转换为短字符串,用于代替原始 URL。

代码实现

我们将使用 Flask 和 Redis 制作一个简单的 URL 缩短器。

首先,我们需要安装 Flask 和 Redis:

pip install Flask redis

然后,我们可以编写 Flask 应用程序:

from hashlib import sha256
from redis import Redis
from flask import Flask, request, redirect, render_template

app = Flask(__name__)
redis = Redis()

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/', methods=['POST'])
def shorten_url():
    url = request.form.get('url')
    if url:
        url_hash = sha256(url.encode('utf-8')).hexdigest()[:8]
        redis.set(url_hash, url)
        return render_template('index.html', short_url=request.url_root + url_hash)

    return redirect('/')

在这个应用程序中,我们有两个路由://shorten_url

路由 / 渲染一个 HTML 模板,用于接受用户输入的原始 URL 地址:

<!DOCTYPE html>
<html>
  <head>
    <title>URL Shortener</title>
  </head>
  <body>
    {% if short_url %}
      <p>Your shortened URL:</p>
      <a href="{{ short_url }}">{{ short_url }}</a>
    {% endif %}

    <form method="POST">
      <input type="text" name="url" placeholder="Enter URL...">
      <button type="submit">Shorten</button>
    </form>
  </body>
</html>

路由 /shorten_url 接受用户提交的原始 URL 地址,并将其散列为一个 8 个字符长的字符串。然后,将散列值和原始 URL 存储到 Redis 中,并返回一个短地址。

运行这个应用程序:

export FLASK_APP=app.py
flask run

现在,你可以在浏览器中打开 http://localhost:5000,输入任意 URL 地址,点击“Shorten”按钮,即可得到一个短地址。

总结

本文介绍了如何使用 Python 制作一个简单的 URL 缩短器,使用了 Flask 和 Redis。虽然这个应用程序非常简单,但说明了 URL 缩短器的工作原理,并提供了一个起始点,供读者进一步探索。