Français
  • uri
  • url
  • urn

Dévoiler URI, URL et URN

Ce guide propose un aperçu des URI, URL et URN, expliquant leurs différences et cas d'utilisation.

Darcy Ye
Darcy Ye
Developer

Lors du développement d'applications web, nous devons souvent appeler différents services web. Lors de la configuration de la communication et de la connexion de différents services web, nous rencontrons fréquemment les concepts d'URI, d'URL et d'URN. Habituellement, les utilisateurs trouvent cela difficile à distinguer, ce qui conduit à des utilisations mélangées ou incorrectes. Dans cet article, nous fournirons des exemples et expliquerons les différences entre eux pour aider tout le monde à mieux comprendre ces concepts et à les interpréter et les utiliser correctement lors de la lecture de blogs techniques, de documentation ou de communication avec d'autres ingénieurs.

Qu'est-ce qu'une URL ?

Une URL (Uniform Resource Locator) fournit l'adresse ou l'emplacement des ressources sur internet. Elle est généralement utilisée pour spécifier l'emplacement des pages web, des fichiers ou des services. Une URL offre un format standardisé pour accéder aux ressources sur le web. C'est un composant clé de la navigation web, du lien, et de la communication sur internet.

Une URL se compose de plusieurs parties qui ensemble définissent l'adresse de la ressource et le protocole utilisé pour y accéder. Analysons l'URL ci-dessous comme exemple et expliquons la fonction de chaque partie une par une.

  1. Schéma : Cela spécifie le protocole ou le schéma utilisé pour accéder aux ressources, tel que HTTP (Hypertext Transfer Protocol), HTTPS (HTTP Secure), FTP (File Transfer Protocol), ou d'autres.

    Le schéma dans l'URL est https.

  2. Hôte : L'hôte spécifie le nom de domaine ou l'adresse IP du serveur qui héberge les ressources.

    L'hôte dans l'URL est example.logto.io .

  3. Port : (Optionnel) Le port représente un numéro de port spécifique sur l'hôte accédant à la ressource. Si aucun port n'est spécifié, il revient au port standard pour le schéma donné.

    Le port par défaut pour HTTP est 80, tandis que le port par défaut pour HTTPS est 443.

    Le port dans l'URL est 8080.

  4. Chemin : (Optionnel) Le chemin indique l'emplacement ou le répertoire spécifique sur le serveur où se trouve la ressource, ce qui peut inclure des répertoires et des noms de fichiers.

    Le chemin dans l'URL doit être /blogs/index.html.

  5. Paramètres de requête : (Optionnel) Les paramètres de requête sont des paramètres supplémentaires passés à une ressource, généralement utilisés dans des applications web dynamiques. Ils apparaissent après le chemin et sont séparés par le symbole ?.

    Les paramètres de requête dans l'URL sont params1=value1&param2=value2, qui sont souvent représentés sous la forme de paires clé-valeur, avec des paires séparées par le symbole &. Dans les scénarios d'utilisation réels, un encodage est souvent requis pour éviter des caractères tels que les espaces.

  6. Identifiant de fragment : (Optionnel) Il peut également être appelé une ancre, utilisée pour localiser une position spécifique dans la ressource.

    L'ancre dans l'URL est #introduction.

De plus, par exemple, utiliser des services de fichiers ou de nombreux boutons "Contactez-nous" sur des pages web sont liés à des URLs, comme :

  • ftp://documents.logto.io/files/legal/soc_ii.pdf
  • mailto:[email protected]?subject=Demande%20de%20quota%20pour%20les%20entreprises

Qu'est-ce qu'un URI ?

Un URI signifie "Uniform Resource Identifier" (Identifiant Uniforme de Ressource). C'est une chaîne de caractères qui identifie une ressource spécifique, telle qu'une page web, un fichier, ou un service. Un URI fournit une manière d'identifier et de localiser de manière unique les ressources en utilisant un format standardisé.

Un URI se compose principalement de deux composants :

  1. Schéma : Indique le protocole ou le schéma utilisé pour accéder à la ressource.
  2. Identifiant de Ressource : Identifie la ressource spécifique à laquelle on accède ou que l'on référence. Le format de l'identifiant de la ressource dépend du schéma utilisé.

D'un point de vue grammatical, les URIs suivent principalement le même format que les URLs, tel que spécifié dans RFC 3986.

Bien que ce format d'URI soit similaire à celui des URLs, il ne garantit pas l'accès à une ressource quelconque sur le Web. Utiliser ce format peut réduire les conflits de noms dans l'espace des noms.

Dans la section ci-dessus, nous avons introduit les URLs, qui non seulement identifient une ressource mais aident également à localiser cette ressource. Donc, en fait, les URLs sont un sous-ensemble propre des URIs.

Qu'est-ce qu'un URN ?

Le terme URN peut ne pas être aussi courant que l'URL et l'URI. Il signifie "Uniform Resource Name" (Nom Uniforme de Ressource), et son objectif est d'identifier les ressources de manière persistante, même si ces ressources n'existent plus.

Contrairement à une URL, un URN ne fournit aucune information sur la façon de localiser la ressource ; il ne fait que l'identifier, un peu comme un URI pur. Plus précisément, un URN est un type d'URI avec le schéma "urn" et a la structure suivante, comme décrit dans RFC 2141 :

<URN>:<NID>:<NSS>

  1. URN : Généralement urn.
  2. Identifiant d'Espace de Noms (NID) : Représente un espace de noms unique ou un système d'identification qui définit et gère l'URN. Il fournit un contexte et assure l'unicité de l'identifiant. Les exemples d'espaces de noms incluent ISBN (International Standard Book Number), etc.
  3. Chaîne Spécifique à l'Espace de Noms (NSS) : C'est une chaîne de caractères qui identifie de manière unique une ressource dans l'espace de noms spécifié. L'identifiant lui-même ne transmet aucune information sur l'emplacement ou la méthode d'accès à la ressource.

Par exemple, un livre très célèbre introduisant les systèmes informatiques CSAPP a son numéro ISBN représenté comme URN urn:isbn:9780134092669.

Les URNs sont souvent utilisés dans divers protocoles standards, comme l'affirmation dans le protocole SAML, qui correspond à l'URN urn:oasis:names:tc:SAML:2.0:assertion.

En ingénierie logicielle, nous pouvons également définir des URNs pour des objectifs spécifiques dans nos propres systèmes selon les règles de nommage URN. Par exemple, dans Logto, pour activer l'Organisation, vous devez ajouter le scope urn:logto:scope:organizations dans la configuration lors de l'utilisation du SDK. Chaque Organisation a également son propre URN dédié urn:logto:organization:{orgId}.

Conclusion

La relation entre URI, URL, et URN peut être illustrée à l'aide du diagramme de Venn suivant :

Relations

URI, URL, et URN peuvent tous être utilisés pour identifier différentes ressources, mais seule l'URL peut localiser précisément la position de la ressource.

URI et URL peuvent supporter divers schémas, tels que HTTP, HTTPS, FTP, mais URN peut être considéré comme ne supportant que le schéma urn.

Toutes les URLs ou URNs sont des URIs, mais tous les URIs ne sont pas des URLs ou des URNs.