Web-APIer
Et API (Application Programming interface) kan ses på som en slags kontrakt for informasjonsutveksling mellom programmer eller software-komponenter. Hvis vi vil lage en nettside som skal vise informasjon fra en database, eller sende inn et skjema som skal lagres i et annet system, bruker vi en API-standard kalt web services. Web services er en tjeneste som lar programmer kommunisere over World Wide Web, gjerne gjennom Web-APIer. I stor grad bruker vi i dag RESTfulle APIer. Kjært barn har nemlig mange navn: REST, WebAPI, eller bare API. Typisk lager vi web-APIer for å kommunisere mellom klienten, f.eks. en nettside, og serveren der tjenester i backend er eksponert. APIer knytter med andre ord frontenden sammen med backenden ❤️
REST og http
REST står for representational state transfer, og beskriver en arkitektur eller stil for kommunikasjon gjennom web-APIer. Det innebærer at oppslag bruker GET
-forespørsler, mens PUT
, POST
og DELETE
brukes til å endre, opprette og slette data over http.
JSON
Når vi sender og mottar data fra et web-api, pleier det å skje i form av JSON, som vi deretter parser til JavaScript. JSON står for JavaScript Object Notation, og er en syntaks for å serialisere objekter, arrayer, tall, strenger, boolske verdier og null. Det ser ganske likt ut som et JavaScript-objekt, men er ikke det samme. Det formateres som følger:
{
"string": "en string",
"key2": 1.2,
"boolean": false,
"array": [1, 2, 3, 4, 5, 6],
"object": {
"key": "value"
},
"empty": null
}
Til sammenlikning ser et JavaScript-objekt ut som dette:
{
string: "en string",
key2: 1.2,
boolean: false,
array: [1, 2, 3, 4, 5, 6],
object: {
key: "value"
},
empty: undefined
}
Vi kan parse fra JSON til JavaScript og motsatt med de følgende funksjonskallene:
// Fra JSON til JS
JSON.parse('{"key":"value"}'); // {key: "value"}
// Fra JS til JSON
JSON.stringify({ key: 'value' }); // '{"key": "value"}'
Oppgaver
- Åpne inspectoren (DevTools) i chrome på en hvilken som helst nettside og gå til nettverk-fanen. Refresh siden og titt på hvilke kall som går. Er det bare
GET
, eller også en og annenPOST
? Trykk deg gjerne inn på kallene og undersøk hvordan headerne, preview og eventuell respons ser ut.