Selamat siang teman!
Untuk perhatian Anda, saya persembahkan terjemahan dari posting "Bagaimana Mengurai URL dalam JavaScript: nama host, nama jalur , kueri, hash" oleh Dmitri Pavlutin.
Uniform Resource Locator atau singkatnya URL adalah tautan ke sumber daya web (halaman web, gambar, file). URL menentukan lokasi sumber daya dan cara menerimanya - protokol (http, ftp, mailto).
Misalnya, inilah URL untuk artikel ini:
https://dmitripavlutin.com/parse-url-javascript
Seringkali perlu untuk mengambil elemen tertentu dari URL. Ini bisa berupa nama host (nama host,
dmitripavlutin.com) atau nama jalur (nama jalur, /parse-url-javascript).
Cara mudah untuk mendapatkan masing-masing komponen URL adalah dengan konstruktor
URL().
Pada artikel ini, kita akan membahas tentang struktur dan komponen utama URL.
1. Struktur URL
Sebuah gambar memiliki makna ribuan kata. Pada gambar di atas, Anda dapat melihat komponen utama dari URL:
2. Pembuat URL ()
Konstruktor
URL()adalah fungsi yang memungkinkan Anda mengurai (mengurai) komponen URL:
const url = new URL(relativeOrAbsolute [, absoluteBase])
Argumennya
relativeOrAbsolutebisa berupa URL absolut atau relatif. Jika argumen pertama adalah link relatif, maka argumen kedua ,, absoluteBasediperlukan dan merupakan URL absolut yang menjadi dasar argumen pertama.
Misalnya, mari kita inisialisasi
URL()dengan URL absolut:
const url = new URL('http://example.com/path/index.html')
url.href // 'http://example.com/path/index.html'
Sekarang mari kita gabungkan URL relatif dan absolut:
const url = new URL('/path/index.html', 'http://example.com')
url.href // 'http://example.com/path/index.html'
Properti
hrefinstance URL()mengembalikan string URL yang diteruskan.
Setelah membuat sebuah instance
URL(), Anda dapat mengakses komponen URL. Sebagai referensi, berikut adalah antarmuka instance 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;
}
Di sini, ketik
USVStringberarti JavaScript harus mengembalikan string.
3. String kueri
Properti
url.searchmemungkinkan Anda untuk mendapatkan string kueri URL yang dimulai dengan awalan ?:
const url = new URL(
'http://example.com/path/index.html?message=hello&who=world'
)
url.search // '?message=hello&who=world'
Jika tidak ada string kueri, ia
url.searchmengembalikan string kosong (''):
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. Parsing (parsing) string kueri
Alih-alih mendapatkan string kueri asli, kita bisa mendapatkan parameternya.
Cara mudah untuk melakukannya disediakan oleh properti
url.searchParams. Nilai properti ini adalah turunan dari antarmuka URLSeachParams.
Objek
URLSearchParamsmenyediakan banyak metode untuk bekerja dengan parameter string kueri ( get(param), has(param)dan seterusnya).
Mari kita ambil contoh:
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')mengembalikan nilai parameter messagestring kueri.
Mengakses parameter yang tidak ada akan
url.searchParams.get('missing')mengembalikan null.
4. Hostname (nama host)
Nilai properti
url.hostnameadalah nama host dari URL:
const url = new URL('http://example.com/path/index.html')
url.hostname // 'example.com'
5. Jalur (nama jalur)
Properti
url.pathnameberisi jalur URL:
const url = new URL('http://example.com/path/index.html?param=value')
url.pathname // '/path/index.html'
Jika URL tidak memiliki jalur, itu
url.pathnamemengembalikan karakter /:
const url = new URL('http://example.com/');
url.pathname; // '/'
6. Hash
Terakhir, hash dapat diperoleh melalui properti
url.hash:
const url = new URL('http://example.com/path/index.html#bottom')
url.hash // '#bottom'
Jika tidak ada hash, itu
url.hashmengembalikan string kosong (''):
const url = new URL('http://example.com/path/index.html')
url.hash // ''
7. Memeriksa (memvalidasi) URL
Memanggil konstruktor
new URL()tidak hanya membuat instance, tetapi juga memvalidasi URL yang diteruskan. Jika URL tidak valid, itu akan dibuang TypeError.
Misalnya,
http ://example.combukan URL yang valid karena httpada spasi setelahnya .
Mari coba gunakan URL ini:
try {
const url = new URL('http ://example.com')
} catch (error) {
error // TypeError, "Failed to construct URL: Invalid URL"
}
Sebagai
'http ://example.com'url yang salah new URL('http ://example.com')lempar seperti yang diharapkan TypeError.
8. Bekerja dengan URL
Properti seperti
search, hostname, pathname, hashdapat ditulis.
Sebagai contoh, mari kita ubah nama host dari URL yang ada dari
red.commenjadi 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'
Properti
origin, searchParamsbersifat hanya baca.
9. Kesimpulan
Konstruktor
URL()adalah cara yang sangat mudah untuk mengurai (mengurai) dan memvalidasi URL dalam JavaScript.
new URL(relativeOrAbsolute, [, absoluteBase]mengambil URL absolut atau relatif sebagai parameter pertama. Jika parameter pertama adalah URL relatif, parameter kedua harus berupa URL absolut - basis untuk argumen pertama.
Setelah dibuat
URL(), Anda dapat mengakses komponen utama URL:
url.search- string kueri asliurl.searchParams- contohURLSearchParamsuntuk mendapatkan parameter string kueriurl.hostname- nama hosturl.pathname- caraurl.hash- nilai hash