# URL
```
author: krm
created: 2018-10-09  
status: draft
```

# 👁️‍🗨️ Om URL

Genom att förstå hur URL:er fungerar kan vi lära oss mycket om webben.

- En av viktigaste grundstenen för användare av internet.
- Har stor betydelse för många olika teknologier och metodiker.
- Exempel: RESTFull

# ❓ Vad är en URL?

En URL lokaliserar en webresurs på en dator i ett datornätverk.

- Förkortning av "Uniform Resource Locator", kallas ofta för web adress.
- Den är uppbyggd av många mindre delar som hanteras av webklienten och webserver.
- Varjdel har sin egen syntax och betydelse.
- 🔗 [http://htsit.se/r/web/robot-game.html?level=simplast](http://htsit.se/r/web/robot-game.html?level=simplast)
- 🔗 [https://www.xkcd.com/378/](https://www.xkcd.com/378/)
- 🔗 [https://www.svt.se/nyheter/lokalt/skane/](https://www.svt.se/nyheter/lokalt/skane/)
- 🔗 [https://what-if.xkcd.com/](https://what-if.xkcd.com/)

# Protokol

Först på en fullständig URL har vi ett protokol.

- Det vanligaste protokollen är "http" eller "https".
- Exempel: __https__://xkcd.com/303/
- Andra exempel är svårare att hitta, men några påhittade exempel 
  som skulle kunna finnas: 
- Exempel: __ftp:__//ftp.htsit.se* 
- Exempel: __file:__///home/krm/dev/a/index.html* 
  

# Domän

Domän kommer direkt efter protokollet och delas också upp i delar.

- Varje del separeras med ett ".".
- Exempel: https://__what-if.xkcd.com__
- Exempel: https://__www.svt.se__
- De olika delarna har olika namn och uppgift.

# Toppdomänen

Sist i domänen har vi toppdomänen.

- Den är ofta kort med bara ett par bostäver.
- Varje toppdomän ägs av en organistation som kontrollerar den.
- Ofta är det tänkt att ett viss typ av innnehåll ska finnas under 
   en toppdomän.
- I Sverige ägs toppdämen av stiftelsen ".SE".
- Websidor ifrån sverige kan med fördel läggas under denna topdomän.
- Exempel: _.com företag_ - _.org organisationer_ - _.com: företag_
- Exempel: _.top Allmän_ - _.app För appar kontrollerat av Google._


# Domännamn

Domännamn är ett namn som en person eller organisation äger på internet.

- Det kan ses som olika adresser på internet.
- Vi köper rätten att använda dem ifrån ett företag.
- Detta företag har fått tillstånd av dem som kontrollerar 
   toppdomänen.
- En avgift betals sedan varje år för att forsätta anväda domänen.
- Så länge avgiften betals får ingen annan ta över namnet.

År 2018: Kostar det vanligen mellan 60-300 kr att registrera ett domän, 
men det finns dyrare och biligare. ".se" kostar 125 kronnor.

# Subdomän

Till varje domän kan du koppla hur många sudbomänner du vill.

- Varje suddomän eller domän kan 
- En vanlig subdoämän är "www", observera att dena inte är nödvändig 
   för att ha en webbserver.
- Många kopplar dock den sudomänen till webbserver för att inte förvira.
- Exempel: htsit.se och www.htsit.se pekar båda på samma webbserver.

För att kunna göra detta behöver du en namnserver, du kan antagligen 
använde en ifrån dem du köpte domännamnet av eller de som har ditt 
webhotel eller VPS.

# DNS

"Domain Name System" är servrar som hanterar domänanen och kopplar iop 
den med så kallade IP-adersser på internet. IP-adresserna kan sen 
användas för att hitta rätt servrer.
 
- Toppdomänen och domänen kontrolleras av de organsiationer och 
   företag som säljer domäner.
- Subdomänerna till en domän du eger kontroleras av dig.
- Systemmet är hierarkiskt, servrarana frågar varandra i ordning för 
   att få fram en IP-adress. 
- Användarna frågar en DNS somhttps://www.dn.se/ sedan frågar en DNS server högre upp 
   i heirarkin.
- Om ingen server vet svaret börjar topppdoämenen fråga namnservrar 
   som är ansluta till den.

# Port

Efter domännamnet kan vi ha ett portnummer.

- Portnummer berättar vilket server program som vi vill komma åt på 
   server.
- Börjar med ":" och sedan ett tal.
- Exempel: http://htsit.se:__8080__
- En webbserver lyssnar normalt på port 443(https) och 80(http)
- En webbläsare komuniserar normalt via dessa portar.

Du behöver alldrig skriva ut portnumret om du använder standart 
portarna för ett protokoll.

# Sökväg

Detta är den text som ger besked till webbservern om vad du vill ha 
ifrån den.

- Ofta kan det vara en sökväg till en fil som webbklienten vill ha.
- Det kan också vara ett API anrop.
- Eller någon anna typ av webbresurs.

# Filnamn

Sist i sökvägen kan det vara ett filnamn.

- På en statisk server motsvarar detta en fil i filsystemet.
- Exempel: http://www.htsit.se/a/topics/__index.html__
- Filändelsen kan användas av webbser ver för att sätta MIME type, 
   se avsnitt om HTTP.

# URL Variabler

En URL kan innehålla flera variabler som innehåller infromation till 
webbservern.

- Syntaxen är att det börjar med "?" efter sökvägen.
- Sedan namnet på variblen lika med värdet.
- För flera variabler anbvänd "&".
- Typen på variabel kommer alltid vara "string"
- Exempel: http://htsit.se/r/web/robot-game.html?level=all-resourses&steptime=0.2

# Escape character för en URL

Visa tecken kan inte finnas i en URL för de skulle förvirra programmet 
som parsar. DEssa tecken omvandla till andra tecken.
