---
tags: 1NSI
---
# URL
Une URL (Uniform Resource Locator) est l’adresse complète qui permet d’accéder à une ressource sur Internet (page web, image, fichier, etc.).
Exemple :
`https://www.exemple.com/dossier/page.html?produit=chat&couleur=noir`
Elle se décompose en plusieurs parties :
* `https://` → le protocole (comment on communique avec le site), se termine par `://`
* `www.exemple.com` → le nom de domaine (le serveur) : ne doit pas contenir les carctères `&` , `?`, ni `/`
* `/dossier/page.html` → le chemin vers la ressource. La syntaxe est exactement la même que celle que nous avons vue dans le chapitre Matériel/Systèmes d'exploitation : les `/` séparent les “dossiers” et la page, comme dans un fichier. Si cette partie n'existe pas, le serveur renvoie souvent vers un fichier nommé `index.html` situé dans son dossier racine.
* `?` (facultatif) → indique le début des paramètres, s'il y en a
* `produit=chat&couleur=noir` → les paramètres
👉 `&` sert à séparer plusieurs paramètres envoyés au site et `=` sert à séparer le nom du paramètre de sa valeur.
En résumé :
* `/` organise la structure du chemin
* `&` sépare des données dans la requête
# En pratique
## Adresses absolues et relatives
Comme dans un ordinateur sous UNIX, on peut préciser des adresses relatives et absolues. Reprenez vos fichiers HTML et insérez-y :
- au moins une image et un lien (balise `<a>`) vers un fichier situé sur internet avec son adresse absolue, qui commence donc par `http://` ou `https:://`
- au moins une image et un lien situés sur votre ordinateur. Pour cela, utilisez une adresse relative comme nous l'avons vu dans le chapitre sur les systèmes d'exploitation.
## Données dans l'URL
Il est également possible pour le client d'envoyer des paramètres en les écrivant dans l'URL. Cela permettra au serveur d'envoyer des données personnalisées. On dit que la page web est **dynamique** : elle s'adapte aux données qu'elle reçoit.
La syntaxe pour accéder à une telle page est la suivante :
1. Adresse de la page dynamique ;
2. un point d'interrogation ;
3. des couples nom du paramètre/valeur du paramètre situés de part et d'autre d'un signe égale (caractère `=`) ;
4. si plusieurs couples sont envoyés, il faut les séparer par des esperluettes (caractère `&`)
> **Exemple.** Pour récupérer le temps qu'il fait à Céret, on va
> 1. se connecter à https://api.open-meteo.com/v1/forecast ;
> 2. ajouter un `?` à l'URL ;
> 3. préciser la `latitude` et la `longitude` de Céret avec `latitude=42.49` et `longitude=2.75` puis préciser qu'on veut la météo actuelle avec `current_weather=true`
> 4. séparer ces couples clé/valeur par des `&`.
>
> L'URL complète est donc https://api.open-meteo.com/v1/forecast?latitude=42.49&longitude=2.75¤t_weather=true
> **Exercice.** Cliquez sur l'URL de l'exemple précédent et modifiez-la pour obtenir le temps qu'il fait à Vladivostok (latitude : 43.05 , longitude : 131.9). Actualisez la page pour voir le résultat.
> :::spoiler Réponse
> Il faut modifier l'URL qui doit être maintenant https://api.open-meteo.com/v1/forecast?latitude=43.05&longitude=131.9¤t_weather=true
> :::
> **Exercice.** Le site iNaturalist.org permet à toute personne d'enregistrer des observations d'espèces sauvages pour aider la science.
> 1. On peut afficher toutes les observations dans les Pyrénées-Orientales en cliquant sur https://www.inaturalist.org/observations?place_id=30187
> 2. Modifiez l'URL pour afficher la carte. Pour cela, il faut mettre le paramètre `subview` à la valeur `map` puis recharger la page (deux fois si la carte ne s'affiche pas correctement).
>:::spoiler Réponse
> https://www.inaturalist.org/observations?place_id=30187&subview=map (on peut l'obtenir aussi en cliquant sur "carte" sur la page d'iNaturalist)
>:::
> 3. Affichez le mode liste en mettant la valeur de `subview` à `table`.
> :::spoiler Réponse
> https://www.inaturalist.org/observations?place_id=30187&subview=table
> :::
> 4. On peut afficher toutes les observations d'Ours bruns dans le monde avec l'URL https://www.inaturalist.org/observations?place_id=any&taxon_id=41641
> 1. Que signifie `taxon_id` ?
> :::spoiler Réponse
> C'est l'identifiant d'un "taxon", c'est-à-dire un niveau de classement des espèces, genres, familles etc. en biologie. Cela permet de demander "Ours brun" au serveur.
> :::
> 2. Que signifie `any` ?
> :::spoiler Réponse
> Cela signifie "n'importe quoi" en anglais, c'est pour dire au serveur qu'on accepte tous les lieux, dans `place_id=any`.
> :::
> 3. Modifiez l'URL pour n'obtenir que les observations d'ours bruns dans les Pyrénées-Orientales.
> :::spoiler Réponse
> On combine`place_id=30187` de la première question avec `taxon_id=41641` de la quatrième : `https://www.inaturalist.org/observations?place_id=30187&taxon_id=41641`
> :::