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: fed17.github.io
GET HTTP/1.1
Host: https://fed17.github.io
<html>
<head>
<title>FED17 homepage</title>
</head>
Det gick bra, här har du resursen (index.html)!
GET HTTP/1.1
Host: http://fed17.herokuapp.com/todos/1
{
"id": 1,
"text": "Buy Milk",
"complete": false
}
Det gick bra, här har du resursen (todos.json)!
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
//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
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 https://myapi.com/users/12
URLen indikerar: en användare
12 är i det här fallet ett unikt id för användaren
DELETE https://myapi.com/users/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
REST-compliant Web services allow requesting systems to access and manipulate textual representations of Web resources using a uniform and predefined set of stateless operations.Ref: Wiki - REST
Roy Fielding
"Architectural Styles and the Design of Network-based Software Architectures"
Dissertation @ UNIVERSITY OF CALIFORNIAThere are six guiding constraints that define a RESTful system
Web service APIs that adhere to the REST architectural constraints are called RESTful APIs
REST är varken en standard eller ett protokoll
Ref: restfulapi.netIn simplest words, in the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs).Ref: restfulapi.net
The client–server communication is constrained by no client context being stored on the server between requests.
Alla requests sker isolerade från varandra.
Servern behöver inte ha någon information från dig: användaren.
En resurs kan identifieras med en URL. Resursen som användaren ser behöver dock inte vara av samma format som lagras på servern.
På samma sätt som du hämtar informationen kan du även manipulera informationen och lagra ny information. All metadata för att göra detta har du redan.
A REST API should be entered with no prior knowledge beyond the initial URI (bookmark) and set of standardized media types that are appropriate for the intended audience (i.e., expected to be understood by any client that might use the API).Ref: restfulapi.net