Сайты для укорачивания ссылок посещают миллионы посетителей в сутки. Это огромный трафик.
Размещение внизу самой простенькой рекламной картинки обеспечат ваш магазин многотысячными покупками в сутки. А цена создания такого сайта минимальна, т.к. это всего лишь одна страница. Это стоимость одностраничного лендинга в стиле минимализма.
1. Выбор технологий
- Язык программирования и фреймворк для backend: Python (Flask, Django), Node.js (Express), Ruby (Rails), PHP и т.д.
- База данных: SQLite, MySQL, PostgreSQL, MongoDB.
- Frontend: HTML, CSS, JavaScript.
- Дополнительно: Docker для контейнеризации, AWS или Heroku для развертывания.
2. Создание базы данных
Нужна таблица для хранения оригинальных и укороченных ссылок. Пример таблицы:
id | original_url | short_url | created_at |
---|---|---|---|
1 | https://example.com | abc123 | 2024-07-24 12:00:00 |
3. Разработка backend
Flask (Python)
Установим Flask:
bash
pip install Flask
Создаем файл app.py
:
python
from flask import Flask, request, redirect, jsonify
import sqlite3
import string
import random
app = Flask(__name__)DATABASE = ‘urls.db’
def create_db():conn = sqlite3.connect(DATABASE)
c = conn.cursor()
c.execute(»’CREATE TABLE IF NOT EXISTS urls
(id INTEGER PRIMARY KEY AUTOINCREMENT,
original_url TEXT NOT NULL,
short_url TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)»’)
conn.commit()
conn.close()
def generate_short_url():return ».join(random.choices(string.ascii_letters + string.digits, k=6))
def shorten_url():
original_url = request.json.get(‘original_url’)
short_url = generate_short_url()
conn = sqlite3.connect(DATABASE)
c = conn.cursor()
c.execute(‘INSERT INTO urls (original_url, short_url) VALUES (?, ?)’, (original_url, short_url))
conn.commit()
conn.close()
return jsonify({‘original_url’: original_url, ‘short_url’: short_url})
def redirect_url(short_url):
conn = sqlite3.connect(DATABASE)
c = conn.cursor()
c.execute(‘SELECT original_url FROM urls WHERE short_url = ?’, (short_url,))
result = c.fetchone()
conn.close()
if result:
return redirect(result[0])
else:
return jsonify({‘error’: ‘URL not found’}), 404
if __name__ == ‘__main__’:
create_db()
app.run(debug=True)
4. Разработка frontend
Создаем простой HTML файл index.html
:
html
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>URL Shortener</title>
<script>
async function shortenURL() {
const originalURL = document.getElementById('original-url').value;
const response = await fetch('/shorten', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ original_url: originalURL }),
});
const data = await response.json();
document.getElementById('short-url').innerText = `Short URL: ${window.location.origin}/${data.short_url}`;
}
</script>
</head>
<body>
<h1>URL Shortener</h1>
<input type="text" id="original-url" placeholder="Enter original URL">
<button onclick="shortenURL()">Shorten</button>
<p id="short-url"></p>
</body>
</html>
5. Развертывание
- Локально: Запустите Flask приложение командой
python app.py
. - Облако: Используйте платформы как Heroku, AWS, или другие для развертывания.
6. Тестирование и улучшения
- Добавьте проверку входных данных.
- Обеспечьте безопасность (например, проверку подлинности).
- Добавьте пользовательский интерфейс для просмотра статистики использования ссылок.
Вот и все! С таким планом ты сможешь создать свой сервис для укорачивания ссылок.