يتضمن إنشاء أداة تقصير عناوين URL مع عمليات إعادة التوجيه عدة مكونات وخطوات أساسية. فيما يلي مخطط عام لكيفية القيام بذلك:
1. اختر مجموعة التقنيات التي ستستخدمها
- لغة/إطار عمل الخلفية: ستحتاج إلى لغة وإطار عمل من جانب الخادم لمعالجة الطلبات وإنشاء رموز قصيرة والتفاعل مع قاعدة البيانات. تشمل الخيارات الشائعة Python (Flask، Django)، Node.js (Express)، Ruby (Rails)، Go، أو PHP (Laravel).
- قاعدة البيانات: قاعدة البيانات ضرورية لتخزين التعيين بين الرموز القصيرة وعناوين URL الأصلية. تشمل الخيارات PostgreSQL، MySQL، MongoDB، أو حتى Redis للحصول على روابط قصيرة مؤقتة عالية الأداء.
- الواجهة الأمامية (اختيارية ولكن موصى بها): للحصول على واجهة سهلة الاستخدام، يمكنك استخدام HTML و CSS و JavaScript (مع أطر عمل مثل React أو Vue أو Angular) للسماح للمستخدمين بإدخال عناوين URL الطويلة وعرض عناوين URL القصيرة التي تم إنشاؤها.
2. تصميم مخطط قاعدة البيانات
ستحتاج إلى جدول (أو مجموعة) لتخزين تعيينات عناوين URL الخاصة بك. قد يتضمن المخطط الأساسي ما يلي: * id: المفتاح الأساسي (عدد صحيح أو UUID متزايد تلقائيًا).
* short_code: سلسلة قصيرة فريدة (على سبيل المثال، "abcde") ستكون جزءًا من عنوان URL القصير. يجب فهرستها للبحث السريع. * original_url: عنوان URL الكامل والطويل الذي يعيد توجيه الرمز القصير إليه. * created_at: الطابع الزمني لوقت إنشاء عنوان URL القصير.
* clicks (اختياري): عداد لعدد مرات الوصول إلى عنوان URL القصير.
3. منطق الخلفية الأساسي
-
إنشاء الرمز القصير:
- عندما يرسل المستخدم عنوان URL طويلًا، يتعين على الخلفية إنشاء
short_codeفريد. - يمكن القيام بذلك عن طريق:
- إنشاء سلسلة عشوائية: إنشاء سلسلة عشوائية بطول ثابت (على سبيل المثال، 6-8 أحرف) باستخدام أحرف أبجدية رقمية. ستحتاج إلى التحقق مما إذا كان هذا الرمز موجودًا بالفعل في قاعدة البيانات الخاصة بك وإعادة إنشائه إذا كان موجودًا لضمان تفرده.
- التجزئة: قم بتجزئة عنوان URL الأصلي أو مزيج من عنوان URL والطابع الزمني، ثم خذ جزءًا من التجزئة. يمكن أن يكون هذا أكثر حتمية ولكنه لا يزال يتطلب فحوصات التفرد.
- ترميز Base62: إذا كنت تستخدم
idمتزايد تلقائيًا في قاعدة البيانات الخاصة بك، فيمكنك تحويل معرف العدد الصحيح هذا إلى سلسلة base62 (0-9، a-z، A-Z). وهذا يضمن التفرّد ويكون فعالًا للغاية.
- عندما يرسل المستخدم عنوان URL طويلًا، يتعين على الخلفية إنشاء
-
تخزين التعيين:
- بمجرد إنشاء
short_codeفريد، قم بتخزينshort_codeوoriginal_urlفي قاعدة البيانات الخاصة بك.
- بمجرد إنشاء
-
معالجة إعادة التوجيه:
- عندما يصل المستخدم إلى عنوان URL قصير (على سبيل المثال،
yourshortener.com/abcde)، يتعين على الخادم الخاص بك القيام بما يلي:- استخراج
short_code(abcde) من مسار عنوان URL. - الاستعلام عن قاعدة البيانات الخاصة بك للعثور على
original_urlالمرتبط بـshort_code. - إذا تم العثور عليه، قم بإصدار إعادة توجيه HTTP 301 (تم النقل بشكل دائم) أو 302 (تم العثور عليه) إلى
original_url. يُفضل استخدام 301 بشكل عام لإعادة التوجيه الدائمة لأنه يتم تخزينه مؤقتًا بواسطة المتصفحات، مما يقلل من الطلبات اللاحقة إلى الخادم الخاص بك. - إذا لم يتم العثور عليه، قم بإرجاع صفحة خطأ 404 لم يتم العثور عليه.
- استخراج
- عندما يصل المستخدم إلى عنوان URL قصير (على سبيل المثال،
4. نقاط نهاية API (للخلفية)
-
POST /shorten:- يأخذ
original_urlفي نص الطلب. - يُنشئ
short_code. - يخزن التعيين.
- يعرض عنوان URL المختصر الكامل (على سبيل المثال،
yourshortener.com/generated_code).
- يأخذ
-
GET /:short_code:- يأخذ
short_codeمن مسار عنوان URL. - يبحث عن
original_url. - يقوم بإعادة التوجيه.
- يأخذ
5. الواجهة الأمامية (إن أمكن)
- صفحة ويب بسيطة تحتوي على حقل إدخال لعنوان URL الطويل وزر للإرسال.
- يعرض عنوان URL القصير الذي تم إنشاؤه للمستخدم.
6. النشر
- ستحتاج إلى اسم نطاق (على سبيل المثال،
myurl.short). - استضافة تطبيق الخلفية على خادم (على سبيل المثال، AWS، Google Cloud، Heroku، Vercel).
- تكوين خادم الويب (على سبيل المثال، Nginx، Apache) لتوجيه الطلبات إلى تطبيق الخلفية والتعامل مع النطاق.
مثال على التدفق:
- يزور المستخدم
yourshortener.com. - يدخل المستخدم
https://www.example.com/very/long/path/to/a/resourceوينقر على "تقصير". - تقوم الواجهة الأمامية بإرسال طلب
POSTإلىyourshortener.com/shortenمع عنوان URL الطويل. - تقوم الخلفية بإنشاء
short_codeفريد مثلXyZ12a. - تقوم الخلفية بتخزين
XyZ12a->https://www.example.com/very/long/path/to/a/resourceفي قاعدة البيانات. - الخلفية ترد بـ
yourshortener.com/XyZ12a. - المستخدم يشارك
yourshortener.com/XyZ12a. - مستخدم آخر ينقر على
yourshortener.com/XyZ12a. - متصفحه يرسل طلب
GETإلىyourshortener.com/XyZ12a. - الخلفية تبحث عن
XyZ12a، وتجد عنوان URL الأصلي. - يرسل الخادم الخلفي استجابة إعادة توجيه HTTP 301 إلى متصفح المستخدم، مشيرًا إلى
https://www.example.com/very/long/path/to/a/resource. - ثم ينتقل متصفح المستخدم إلى عنوان URL الطويل الأصلي.