كيفية إنشاء أداة تقصير عناوين URL مع عمليات إعادة التوجيه

دليل حول إنشاء خدمة تقصير عناوين URL، يغطي خيارات التكنولوجيا، وتصميم قاعدة البيانات، والمنطق الأساسي لتوليد الكود وإعادة التوجيه، والنشر.

Intermediate

يتضمن إنشاء أداة تقصير عناوين 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). وهذا يضمن التفرّد ويكون فعالًا للغاية.
  • تخزين التعيين:

    • بمجرد إنشاء short_code فريد، قم بتخزين short_code و original_url في قاعدة البيانات الخاصة بك.
  • معالجة إعادة التوجيه:

    • عندما يصل المستخدم إلى عنوان URL قصير (على سبيل المثال، yourshortener.com/abcde)، يتعين على الخادم الخاص بك القيام بما يلي:
      1. استخراج short_code (abcde) من مسار عنوان URL.
      2. الاستعلام عن قاعدة البيانات الخاصة بك للعثور على original_url المرتبط بـ short_code.
      3. إذا تم العثور عليه، قم بإصدار إعادة توجيه HTTP 301 (تم النقل بشكل دائم) أو 302 (تم العثور عليه) إلى original_url. يُفضل استخدام 301 بشكل عام لإعادة التوجيه الدائمة لأنه يتم تخزينه مؤقتًا بواسطة المتصفحات، مما يقلل من الطلبات اللاحقة إلى الخادم الخاص بك.
      4. إذا لم يتم العثور عليه، قم بإرجاع صفحة خطأ 404 لم يتم العثور عليه.

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) لتوجيه الطلبات إلى تطبيق الخلفية والتعامل مع النطاق.

مثال على التدفق:

  1. يزور المستخدم yourshortener.com.
  2. يدخل المستخدم https://www.example.com/very/long/path/to/a/resource وينقر على "تقصير".
  3. تقوم الواجهة الأمامية بإرسال طلب POST إلى yourshortener.com/shorten مع عنوان URL الطويل.
  4. تقوم الخلفية بإنشاء short_code فريد مثل XyZ12a.
  5. تقوم الخلفية بتخزين XyZ12a -> https://www.example.com/very/long/path/to/a/resource في قاعدة البيانات.
  6. الخلفية ترد بـ yourshortener.com/XyZ12a.
  7. المستخدم يشارك yourshortener.com/XyZ12a.
  8. مستخدم آخر ينقر على yourshortener.com/XyZ12a.
  9. متصفحه يرسل طلب GET إلى yourshortener.com/XyZ12a.
  10. الخلفية تبحث عن XyZ12a، وتجد عنوان URL الأصلي.
  11. يرسل الخادم الخلفي استجابة إعادة توجيه HTTP 301 إلى متصفح المستخدم، مشيرًا إلى https://www.example.com/very/long/path/to/a/resource.
  12. ثم ينتقل متصفح المستخدم إلى عنوان URL الطويل الأصلي.