يوم جيد ، أيها الأصدقاء!
أقدم انتباهكم إلى ترجمة مقال "كيفية تحليل عنوان URL في JavaScript: اسم المضيف ، اسم المسار ، الاستعلام ، التجزئة" بقلم ديمتري بافلوتين.
محدد موقع المعلومات أو عنوان URL المختصر هو رابط لمورد ويب (صفحة ويب ، صورة ، ملف). يحدد عنوان URL موقع المورد وكيفية استلامه - البروتوكول (http ، ftp ، mailto).
على سبيل المثال ، إليك عنوان URL لهذه المقالة:
https://dmitripavlutin.com/parse-url-javascript
غالبًا ما يكون من الضروري الحصول على عناصر معينة من عنوان URL. يمكن أن يكون هذا اسم مضيف (اسم مضيف ،
dmitripavlutin.com
) أو اسم مسار (اسم مسار ، /parse-url-javascript
).
من الطرق الملائمة للحصول على المكونات الفردية لعنوان URL هو المُنشئ
URL()
.
في هذه المقالة ، سنتحدث عن البنية والمكونات الرئيسية لعنوان URL.
1. بنية عنوان URL
صورة تساوي ألف كلمة. في الصورة أعلاه ، يمكنك رؤية المكونات الرئيسية لعنوان URL:
2. مُنشئ URL ()
المُنشئ
URL()
هو وظيفة تسمح لك بتحليل (تحليل) مكونات عنوان URL:
const url = new URL(relativeOrAbsolute [, absoluteBase])
relativeOrAbsolute
يمكن أن تكون
الوسيطة عنوان URL مطلق أو نسبي. إذا كانت الوسيطة الأولى عبارة عن ارتباط نسبي ، فستكون الوسيطة الثانية ، absoluteBase
مطلوبة ، وهي عنوان URL المطلق الذي يمثل أساس الوسيطة الأولى.
على سبيل المثال ، لنبدأ
URL()
باستخدام عنوان URL مطلق:
const url = new URL('http://example.com/path/index.html')
url.href // 'http://example.com/path/index.html'
لنجمع الآن عناوين URL النسبية والمطلقة:
const url = new URL('/path/index.html', 'http://example.com')
url.href // 'http://example.com/path/index.html'
تقوم خاصية
href
المثيل URL()
بإرجاع سلسلة URL التي تم تمريرها.
بعد إنشاء مثيل
URL()
، يمكنك الوصول إلى مكونات URL. كمرجع ، إليك واجهة المثيل URL()
:
interface URL {
href: USVString;
protocol: USVString;
username: USVString;
password: USVString;
host: USVString;
hostname: USVString;
port: USVString;
pathname: USVString;
search: USVString;
hash: USVString;
readonly origin: USVString;
readonly searchParams: URLSearchParams;
toJSON(): USVString;
}
هنا ،
USVString
تعني الكتابة أن JavaScript يجب أن ترجع سلسلة.
3. سلسلة الاستعلام
url.search
تتيح لك
الخاصية الحصول على سلسلة استعلام URL تبدأ ببادئة ?
:
const url = new URL(
'http://example.com/path/index.html?message=hello&who=world'
)
url.search // '?message=hello&who=world'
إذا لم تكن هناك سلسلة استعلام ، فإنها
url.search
تُرجع سلسلة فارغة (""):
const url1 = new URL('http://example.com/path/index.html')
const url2 = new URL('http://example.com/path/index.html?')
url1.search // ''
url2.search // ''
3.1. تحليل (تحليل) سلسلة استعلام
بدلاً من الحصول على سلسلة الاستعلام الأصلية ، يمكننا الحصول على معلماتها.
يوفر مكان الإقامة طريقة سهلة للقيام بذلك
url.searchParams
. قيمة هذه الخاصية هي مثيل لواجهة URLSeachParams. يوفر
الكائن
URLSearchParams
العديد من الأساليب للعمل مع معلمات سلسلة الاستعلام ( get(param), has(param)
وما إلى ذلك).
لنأخذ مثالا:
const url = new Url(
'http://example.com/path/index.html?message=hello&who=world'
)
url.searchParams.get('message') // 'hello'
url.searchParams.get('missing') // null
url.searchParams.get('message')
تُرجع قيمة معلمة message
سلسلة الاستعلام.
الوصول إلى معلمة غير موجودة
url.searchParams.get('missing')
يعود null
.
4. اسم المضيف (اسم المضيف)
قيمة الخاصية
url.hostname
هي اسم مضيف عنوان URL:
const url = new URL('http://example.com/path/index.html')
url.hostname // 'example.com'
5. المسار (اسم المسار)
url.pathname
تحتوي
الخاصية على مسار URL:
const url = new URL('http://example.com/path/index.html?param=value')
url.pathname // '/path/index.html'
إذا كان عنوان URL لا يحتوي على مسار ، فإنه يقوم
url.pathname
بإرجاع الحرف /
:
const url = new URL('http://example.com/');
url.pathname; // '/'
6. تجزئة
أخيرًا ، يمكن الحصول على التجزئة عبر خاصية
url.hash
:
const url = new URL('http://example.com/path/index.html#bottom')
url.hash // '#bottom'
إذا لم يكن هناك تجزئة ، فإنها
url.hash
تُرجع سلسلة فارغة (""):
const url = new URL('http://example.com/path/index.html')
url.hash // ''
7. التحقق من صحة عنوان URL
new URL()
لا يؤدي
استدعاء المُنشئ إلى إنشاء مثيل فحسب ، بل يتحقق أيضًا من صحة عنوان URL الذي تم تمريره. إذا كان عنوان URL غير صالح ، فسيتم التخلص منه TypeError
.
على سبيل المثال ،
http ://example.com
عنوان URL غير صالح نظرًا http
لوجود مسافة بعده .
لنجرب استخدام عنوان URL هذا:
try {
const url = new URL('http ://example.com')
} catch (error) {
error // TypeError, "Failed to construct URL: Invalid URL"
}
نظرًا لأن
'http ://example.com'
عنوان url الخطأ يتم new URL('http ://example.com')
طرحه كما هو متوقع TypeError
.
8. العمل مع URL
خصائص مثل
search, hostname, pathname, hash
قابلة للكتابة.
على سبيل المثال ، دعنا نغير اسم المضيف لعنوان URL موجود من
red.com
إلى blue.io
:
const url = new URL('http://red.com/path/index.html')
url.href // 'http://red.com/path/index.html'
url.hostname = 'blue.io'
url.href // 'http://blue.io/path/index.html'
الخصائص
origin, searchParams
للقراءة فقط.
9. الخلاصة
المُنشئ
URL()
طريقة مناسبة جدًا للتحليل (التحليل) والتحقق من صحة عنوان URL في JavaScript.
new URL(relativeOrAbsolute, [, absoluteBase]
يأخذ عنوان URL المطلق أو النسبي باعتباره المعلمة الأولى. إذا كانت المعلمة الأولى عبارة عن عنوان URL نسبي ، فيجب أن تكون المعلمة الثانية عنوان URL مطلق - أساس الوسيطة الأولى.
بمجرد إنشاء مثيل
URL()
، يمكنك الوصول إلى المكونات الرئيسية لعنوان URL:
url.search
- سلسلة الاستعلام الأصليةurl.searchParams
- مثالURLSearchParams
للحصول على معلمات سلسلة الاستعلامurl.hostname
- اسم المضيفurl.pathname
- طريقةurl.hash
- قيمة التجزئة