Vi använder en URL för att besöka en hemsida:
https://vecka.nu
protokoll://domainname.topdomain
Varje enhet på internet har ett unikt IP.
Vi kopplar upp oss mot varandras IP via ett domännamn
All data skickas via detta protokoll
Men det är inte allt...
Transmission: Överföring av data
Control: Kontrollera att data är skickad
Protocol: standardiserat sätt
Vid varje överföring måste protokollet verifera att data skickas mellan parterna
SYN, SYN/ACK, SYN
Synchronize: Ena sidan skickar sin info
Acknowledgment: Den andra bekräftar att infon är mottaget
Processen brukar kallas Three-way handshake
TCP är säkert, själva protokollet kollar att allting kommer fram och att allting kommer fram i rätt ordning.
Här skakas viktiga händer
Multiplayer games
Vi vill inte ha uppkoppling mellan enskilda spelar
Alla som spelar eller "lyssnar på informationen ska få den
Broadcast
En överföring sker på webben sker via HTTP-protokollet
Främst via GET för att hämta från en server
POST för att skicka till en server
REQUEST - RESPONSE
CLIENT - SERVER
GET: Hämta data
POST: Skicka data
PATCH: Uppdatera data
PUT: Byta ut data
DELETE: Ta bort data
Metoderna brukar kallas för CRUD:
GET /index.html HTTP/1.1
Host: fend16.github.io
HTTP/1.1 200 OK
<html>
<head>
<title>FEND16 HomePage bla bla</title>
</head>
Den bästa: 200 OK
Den sämsta: 404 NOT FOUND
Liknande som en html har en <head>-tagg samt en <body>-tagg
Har varje request HEADERS och BODY
meta data om varje förfrågan
Berättar om vilket typ av innehåll som levereras, hur länge innehållet ska samt vilka som får komma åt innehållet
So come on and let it show!
//Funktionen innehåller vår implementation
function getAllListItems(){
return document.getElementsByTagName('li');
}
//När vi kallar på den
//använder vi abstraktionen
getAllListItems();
Interfacet utåt, det vi döper våra funktioner till i princip
Implementationen är själva koden som ligger i funktionen eller metoden. Den är undangömd.
Vi behöver läsa ut vad abstraktionen gör och inte bry oss om implementationen.
Ett API är de funktioner/metoder som din applikation visar utåt publikt.
Är de funktioner som vi interagerar med, vi behöver inte se koden bakom.
DOM API
JavaScript API
Oftast pratar man om APIer som har endpoints där man hämtar data ifrån
Servrar som exponerar URLer där man kan hämta enbart data ifrån och inte hemsidor.
Oftat får man tillbaka informationen i form av JSON
GET HTTP/1.1
Host: https://myapi.com/users
[
{
"id": "1",
"name": "User1"
}
]
Skicka och hämta data via HTTP-protokollet med enkla medel
GET / POST / PATCH / DELETE
Representational State Transfer
Servern bestämmer vad som kan skickas ut. Användaren behöver i princip bara gå till URLen för att hämta informationen.
Vi som användare behöver inte känna till strukturen av APIt, bara hur vi ska komma åt den.
Internt använder alla sidor sitt eget API för att manipulera data
Vissa företag väljer att göra denna data publik och öppna sina endpoints för externa användare.
Alla moderna APIer har följande upplägg:
GET: https://myapi.com/users
Hämtar samtliga användare
Det som returneras är nästan alltid JSON
POST: https://myapi.com/users
Samma url men metoden är annorlunda
Vi indikerar att vi ska skicka med information till servers med POST
GET /users
[
{
"name": "Gurt"
},
{
"name": "Flurt"
}
]
POST /users
name=Kurt
{
"name": "Kurt"
}
GET /users
[
{
"name": "Gurt"
},
{
"name": "Flurt"
},
{
"name": "Kurt"
}
]
GET https://myapi.com/user/12
URLen indikerar singular: en användare
12 är i det här fallet ett unikt id för användaren
DELETE https://myapi.com/user/12
Samma URL men metoden är annorlunda
Användare nr 12 ska bort!
PATCH https://myapi.com/user/12
Samma URL men metoden är annorlunda
Användare nr 12 ska ändras!
Med POST och PATCH måste vi skicka med ny information
Med GET och DELETE behöver vi inte skicka med ny information eftersom vi inte ska modifiera
GET är den enda "säkra" metoden