La création d'un raccourcisseur d'URL avec redirections implique plusieurs composants et étapes clés. Voici un aperçu général de la manière dont vous pouvez vous y prendre :
1. Choisissez votre pile technologique
- Langage/cadre backend : vous aurez besoin d'un langage et d'un cadre côté serveur pour traiter les requêtes, générer des codes courts et interagir avec une base de données. Les choix les plus courants sont Python (Flask, Django), Node.js (Express), Ruby (Rails), Go ou PHP (Laravel).
- Base de données : une base de données est essentielle pour stocker le mappage entre les codes courts et les URL d'origine. Les options incluent PostgreSQL, MySQL, MongoDB ou même Redis pour des liens courts temporaires très performants.
- Frontend (facultatif mais recommandé) : pour une interface conviviale, vous pouvez utiliser HTML, CSS et JavaScript (avec des frameworks tels que React, Vue ou Angular) afin de permettre aux utilisateurs de saisir des URL longues et de voir les URL courtes générées.
2. Conception du schéma de base de données
Vous aurez besoin d'une table (ou d'une collection) pour stocker vos mappages d'URL. Un schéma de base peut inclure : * id : clé primaire (entier auto-incrémenté ou UUID).
* short_code : une chaîne courte unique (par exemple, « abcde ») qui fera partie de votre URL courte. Elle doit être indexée pour permettre des recherches rapides. * original_url : l'URL complète et longue vers laquelle le code court redirige. * created_at : horodatage de la création de l'URL courte.
* clicks (facultatif) : un compteur indiquant le nombre de fois où l'URL courte a été consultée.
3. Logique backend principale
-
Génération du code court :
- Lorsqu'un utilisateur soumet une URL longue, votre backend doit générer un
short_codeunique. - Cela peut être fait de la manière suivante :
- Génération d'une chaîne aléatoire : générez une chaîne aléatoire d'une longueur fixe (par exemple, 6 à 8 caractères) à l'aide de caractères alphanumériques. Vous devrez vérifier si ce code existe déjà dans votre base de données et le régénérer si c'est le cas afin de garantir son unicité.
- Hachage : Hachez l'URL d'origine ou une combinaison de l'URL et d'un horodatage, puis prenez une partie du hachage. Cette méthode peut être plus déterministe, mais nécessite tout de même des vérifications d'unicité.
- Codage Base62 : si vous utilisez un
idà incrémentation automatique dans votre base de données, vous pouvez convertir cet identifiant entier en une chaîne de caractères base62 (0-9, a-z, A-Z). Cela garantit l'unicité et est très efficace.
- Lorsqu'un utilisateur soumet une URL longue, votre backend doit générer un
-
Stockage du mappage :
- Une fois qu'un
short_codeunique est généré, stockez leshort_codeet l'original_urldans votre base de données.
- Une fois qu'un
-
Gestion des redirections :
- Lorsqu'un utilisateur accède à une URL courte (par exemple,
yourshortener.com/abcde), votre serveur doit :- Extraire le
short_code(abcde) du chemin d'accès de l'URL. - Interroger votre base de données pour trouver l'
original_urlassocié à ceshort_code. - Si elle est trouvée, émettre une redirection HTTP 301 (déplacé de manière permanente) ou 302 (trouvé) vers l'
original_url. Une redirection 301 est généralement préférable pour les redirections permanentes, car elle est mise en cache par les navigateurs, ce qui réduit les requêtes ultérieures vers votre serveur. - Si elle n'est pas trouvée, renvoyer une page d'erreur 404 Not Found (introuvable).
- Extraire le
- Lorsqu'un utilisateur accède à une URL courte (par exemple,
4. Points de terminaison API (pour le backend)
-
POST /shorten:- Prend
original_urldans le corps de la requête. - Génère un
short_code. - Stocke le mappage.
- Renvoie l'URL courte complète (par exemple,
yourshortener.com/generated_code).
- Prend
-
GET /:short_code:- Récupère
short_codeà partir du chemin d'accès URL. - Recherche
original_url. - Effectue la redirection.
- Récupère
5. Frontend (le cas échéant)
- Une simple page web avec un champ de saisie pour l'URL longue et un bouton pour la soumettre.
- Affiche l'URL courte générée à l'utilisateur.
6. Déploiement
- Vous aurez besoin d'un nom de domaine (par exemple,
myurl.short). - Hébergez votre application backend sur un serveur (par exemple, AWS, Google Cloud, Heroku, Vercel).
- Configurez votre serveur web (par exemple, Nginx, Apache) pour acheminer les requêtes vers votre application backend et gérer le domaine.
Exemple de flux :
- L'utilisateur visite
yourshortener.com. - L'utilisateur saisit
https://www.example.com/very/long/path/to/a/resourceet clique sur « Raccourcir ». - Le frontend envoie une requête
POSTàyourshortener.com/shortenavec l'URL longue. - Le backend génère un
short_codeunique, tel queXyZ12a. - Le backend stocke
XyZ12a->https://www.example.com/very/long/path/to/a/resourcedans la base de données. - Le backend répond avec
yourshortener.com/XyZ12a. - L'utilisateur partage
yourshortener.com/XyZ12a. - Un autre utilisateur clique sur
yourshortener.com/XyZ12a. - Son navigateur envoie une requête
GETàyourshortener.com/XyZ12a. - Le backend recherche
XyZ12aet trouve l'URL d'origine. - Le backend envoie une réponse de redirection HTTP 301 au navigateur de l'utilisateur, pointant vers
https://www.example.com/very/long/path/to/a/resource. - Le navigateur de l'utilisateur navigue alors vers l'URL longue d'origine.