كشف النقاب عن URI وURL وURN
يوفر هذا الدليل نظرة عامة على URI وURL وURN، موضحا الفرق بينها وحالات استخدامها.
عند تطوير تطبيقات الويب، غالباً ما نحتاج إلى استدعاء خدمات ويب مختلفة. عند تكوين الاتصال والتواصل بين خدمات الويب المختلفة، غالباً ما نواجه مفاهيم URI وURL وURN. عادةً ما يجد المستخدمون صعوبة في التمييز بينها، ما يؤدي إلى استخدام مختلط أو غير صحيح. في هذه المقالة، سنقدم أمثلة ونوضح الفروقات بينها لمساعدة الجميع على فهم هذه المفاهيم بشكل أفضل وتفسيرها واستخدامها بشكل صحيح عند قراءة المدونات الفنية، الوثائق، أو التواصل مع مهندسين آخرين.
ما هو URL؟
URL (محدد مواقع الموارد الموحد) يوفر عنوان الويب أو موقع الموارد على الإنترنت. يُستخدم عادةً لتحديد موقع صفحات الويب، الملفات، أو الخدمات. يوفر URL تنسيقاً موحداً للوصول إلى الموارد على الويب. إنه مكون رئيسي في التصفح والربط والاتصال على الإنترنت.
يتكون URL من عدة أجزاء تحدد معاً عنوان المورد والبروتوكول المستخدم للوصول إليه. دعونا نحلل عنوان URL أدناه كمثال ونوضح وظيفة كل جزء واحداً تلو الآخر.
-
المخطط (Scheme): يحدد البروتوكول أو المخطط المستخدم للوصول إلى الموارد، مثل HTTP (بروتوكول نقل النص ال فائق)، HTTPS (بروتوكول نقل النص الفائق الآمن)، FTP (بروتوكول نقل الملفات)، أو غيرها.
المخطط في URL هو
https
. -
المضيف (Host): يحدد اسم النطاق أو عنوان IP للخادم الذي يستضيف الموارد.
المضيف في URL هو
example.logto.io
. -
المنفذ (Port): (اختياري) يمثل رقماً محدداً في المضيف للوصول إلى المورد. إذا لم يتم تحديد منفذ، فإنه يكون افتراضياً المنفذ القياسي للمخطط المعطى.
المنفذ الافتراضي لـ HTTP هو 80، بينما المنفذ الافتراضي لـ HTTPS هو 443.
المنفذ في URL هو
8080
. -
المسار (Path): (اختياري) يشير إلى الموقع المحدد أو الدليل على الخادم حيث يوجد المورد، والذي يمكن أن يشمل الأدلة وأسماء الملفات.
المسار في URL يجب أن يكون
/blogs/index.html
. -
معاملات الاستعلام (Query Parameters): (اختياري) هي معاملات إضافية تم تمريرها إلى المورد، تُستخدم عادة في تطبيقات الويب الديناميكية. تظهر بعد المسار ويتم فصلها بالرمز
؟
.معاملات الاستعلام في URL هي
params1=value1¶m2=value2
، والتي غالباً ما تمثل في شكل أزواج مفتاح-قيمة، مع فصل الأزواج بالرمز&
. في السيناريوهات الفعلية، غالباً ما تحتاج إلى الترميز لتجنب الأحرف مثل المسافات. -
معرف الشظية (Fragment Identifier): (اختياري) يمكن أيضاً أن يُسمى مؤشر، يُستخدم لتحديد موقع محدد في المورد.
المؤشر في URL هو
#introduction
.
بالإضافة إلى ذلك، على سبيل المثال، استخدام خدمات الملفات أو العديد من زرار "اتصل بنا" على صفحات الويب مرتبط بعناوين URL، مثل:
ftp://documents.logto.io/files/legal/soc_ii.pdf
mailto:[email protected]?subject=Enterprise%20quota%20request
ما هو URI؟
يقف URI لـ "معرف الموارد الموحد". هو سلسلة من الأحرف التي تحدد موردًا محددًا، مثل صفحة ويب، ملف، أو خدمة. يوفر URI طريقة لتحديد وتحديد الموارد بشكل فريد باستخدام تنسيق قياسي.
يتكون URI بشكل رئيسي من مكونين:
- المخطط (Scheme): يشير إلى البروتوكول أو المخطط المستخدم للوصول إلى المورد.
- معرف المورد (Resource Identifier): يحدد المورد المحدد الذي يتم الوصول إليه أو الإشارة إليه. يعتمد شكل معرف المورد على المخطط المستخدم.
من الناحية النحوية، تتبع URIs غالباً نفس التنسيق مثل URLs، كما هو موضح في RFC 3986.
على الرغم من أن هذا التنسيق لـ URI مشابه لتنسيق URLs، إلا أنه لا يضمن الوصول إلى أي مورد على الويب. يمكن لاستخدام هذا التنسيق تقليل تعارض أسماء النطاقات.
في القسم السابق، قدمنا URLs، التي لا تحدد فقط الموارد ولكن أيضا تساعد في تحديد موقع ذاك المورد. لذلك، في الواقع، URLs هي مجموعة فرعية صحيحة من URIs.
ما هو URN؟
قد لا يكون URN شائعًا مثل URL وURI. يقف لـ "اسم الموارد الموحد"، ونطاقه هو تحديد الموارد بطريقة مستدامة، حتى إذا لم تعد هذه الموارد موجودة.
على عكس URL، لا يوفر URN أي معلومات حول كيفية تحديد مكان المورد؛ فهو يحددها فقط، مثل URI الصافي. بشكل محدد، URN هو نوع من URI مع المخطط "urn" وله الهيكل التالي، كما هو موضح في RFC 2141:
<URN>:<NID>:<NSS>
- URN: عادة
urn
. - معرف النطاق (Namespace Identifier - NID): يمثل نطاقًا فريدًا أو نظام معرف يدير ويعرف URN. يوفر السياق ويضمن فريدة المعرف. تشمل أمثلة النطاقات رقم الكتاب المعياري الدولي (ISBN)، إلخ.
- سلسلة الأحرف الخاصة بالنطاق (Namespace Specific String - NSS): هي سلسلة من الأحرف التي تحدد موردًا بشكل فريد داخل النطاق المحدد. لا ينقل المعرف نفسه أي معلومات عن موقع أو طريقة الوصول إلى المورد.
على سبيل المثال، فإن كتابًا شهيرًا يقدم أنظمة الكمبيوتر CSAPP لديه رقم ISBN الخاص ب ه ممثلًا كـ URN urn:isbn:9780134092669
.
تُستخدم URNs غالباً في بروتوكولات معيارية مختلفة، مثل الإقرار في بروتوكول SAML، الذي يتوافق مع URN urn:oasis:names:tc:SAML:2.0:assertion
.
في هندسة البرمجيات، يمكننا أيضًا تعريف URNs لأغراض محددة في أنظمتنا الخاصة وفقًا لقواعد تسمية URN. على سبيل المثال، في Logto، لتمكين المنظمة، تحتاج إلى إضافة النطاق urn:logto:scope:organizations
في التكوين عند استخدام SDK. لكل منظمة أيضًا URN خاص بها urn:logto:organization:{orgId}
.
خاتمة
يمكن توضيح العلاقة بين URI وURL وURN باستخدام مخطط فين التالي:
يمكن استخدام URI وURL وURN لتحديد الموارد المختلفة، لكن فقط URL يمكن أن يحدد بدقة موقع المورد.
يمكن لـ URI وURL دعم مخططات متنوعة، مثل HTTP وHTTPS وFTP، لكن يمكن اعتبار URN يدعم فقط مخطط urn
.
كل URLs أو URNs هي URIs، ولكن ليست كل URIs هي URLs أو URNs.