Bonne journée, mes amis!
Je présente à votre attention la traduction de l'article "Comment analyser l'URL en JavaScript: nom d'hôte, chemin, requête, hachage" de Dmitri Pavlutin.
Uniform Resource Locator ou URL pour faire court est un lien vers une ressource Web (page Web, image, fichier). L'URL définit l'emplacement de la ressource et la manière dont elle est reçue - le protocole (http, ftp, mailto).
Par exemple, voici l'URL de cet article:
https://dmitripavlutin.com/parse-url-javascript
Il est souvent nécessaire d'obtenir certains éléments d'une URL. Cela peut être un nom d'hôte (nom d'hôte,
dmitripavlutin.com
) ou un chemin (chemin, /parse-url-javascript
).
Un moyen pratique d'obtenir les composants individuels d'une URL consiste à utiliser le constructeur
URL()
.
Dans cet article, nous parlerons de la structure et des principaux composants d'une URL.
1. Structure de l'URL
Une image vaut mieux que mille mots. Dans l'image ci-dessus, vous pouvez voir les principaux composants de l'URL:
2. Constructeur d'URL ()
Un constructeur
URL()
est une fonction qui vous permet d'analyser (analyser) les composants URL:
const url = new URL(relativeOrAbsolute [, absoluteBase])
L'argument
relativeOrAbsolute
peut être une URL absolue ou relative. Si le premier argument est un lien relatif, alors le deuxième argument ,, absoluteBase
est requis et est l'URL absolue qui est la base du premier argument.
Par exemple, initialisons
URL()
avec une URL absolue:
const url = new URL('http://example.com/path/index.html')
url.href // 'http://example.com/path/index.html'
Maintenant, combinons les URL relatives et absolues:
const url = new URL('/path/index.html', 'http://example.com')
url.href // 'http://example.com/path/index.html'
La propriété
href
instance URL()
renvoie la chaîne d'URL transmise.
Après avoir créé une instance
URL()
, vous pouvez accéder aux composants URL. Pour référence, voici l'interface de l'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;
}
Ici, le type
USVString
signifie que JavaScript doit renvoyer une chaîne.
3. Chaîne de requête
La propriété
url.search
vous permet d'obtenir une chaîne de requête URL commençant par un préfixe ?
:
const url = new URL(
'http://example.com/path/index.html?message=hello&who=world'
)
url.search // '?message=hello&who=world'
S'il n'y a pas de chaîne de requête, elle
url.search
renvoie une chaîne vide (''):
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. Analyse (analyse) d'une chaîne de requête
Au lieu d'obtenir la chaîne de requête d'origine, nous pouvons obtenir ses paramètres.
Un moyen simple de le faire est fourni par l'établissement
url.searchParams
. La valeur de cette propriété est une instance de l'interface URLSeachParams.
L'objet
URLSearchParams
fournit de nombreuses méthodes pour travailler avec les paramètres de chaîne de requête ( get(param), has(param)
et ainsi de suite).
Prenons un exemple:
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')
renvoie la valeur du paramètre de message
chaîne de requête.
L'accès à un paramètre inexistant
url.searchParams.get('missing')
renvoie null
.
4. Nom d'hôte (nom d'hôte)
La valeur de la propriété
url.hostname
est le nom d'hôte de l'URL:
const url = new URL('http://example.com/path/index.html')
url.hostname // 'example.com'
5. Chemin (chemin)
La propriété
url.pathname
contient le chemin de l'URL:
const url = new URL('http://example.com/path/index.html?param=value')
url.pathname // '/path/index.html'
Si l'URL n'a pas de chemin, elle
url.pathname
renvoie le caractère /
:
const url = new URL('http://example.com/');
url.pathname; // '/'
6. Hash
Enfin, le hachage peut être obtenu via une propriété
url.hash
:
const url = new URL('http://example.com/path/index.html#bottom')
url.hash // '#bottom'
S'il n'y a pas de hachage, il
url.hash
renvoie une chaîne vide (''):
const url = new URL('http://example.com/path/index.html')
url.hash // ''
7. Vérification (validation) de l'URL
L'appel du constructeur
new URL()
crée non seulement une instance, mais valide également l'URL transmise. Si l'URL n'est pas valide, elle est jetée TypeError
.
Par exemple, ce
http ://example.com
n'est pas une URL valide car http
il y a un espace après .
Essayons d'utiliser cette URL:
try {
const url = new URL('http ://example.com')
} catch (error) {
error // TypeError, "Failed to construct URL: Invalid URL"
}
Comme la
'http ://example.com'
mauvaise URL est new URL('http ://example.com')
lancée comme prévu TypeError
.
8. Travailler avec l'URL
Les propriétés telles que
search, hostname, pathname, hash
sont inscriptibles.
Par exemple, modifions le nom d'hôte d'une URL existante de
red.com
en 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'
Les propriétés
origin, searchParams
sont en lecture seule.
9. Conclusion
Un constructeur
URL()
est un moyen très pratique pour analyser (analyser) et valider une URL en JavaScript.
new URL(relativeOrAbsolute, [, absoluteBase]
prend une URL absolue ou relative comme premier paramètre. Si le premier paramètre est une URL relative, le deuxième paramètre doit être une URL absolue - la base du premier argument.
Une fois instancié
URL()
, vous pouvez accéder aux principaux composants de l'URL:
url.search
- chaîne de requête d'origineurl.searchParams
- une instanceURLSearchParams
pour obtenir les paramètres de la chaîne de requêteurl.hostname
- nom d'hôteurl.pathname
- façonurl.hash
- valeur de hachage