Här kommer en otroligt intressant lektion om API.er!
I denna lektion kommer du att lära dig om något som kallas API:er och hur utvecklare världen över använder dessa för att få åtkomst till mängder av data. Du kommer också att lära dig grunderna i vad HTTP- och HTTPS-förfrågningar är. I nästkommande delar av denna lektion kommer du även att lära dig att använda Python-modulen "requests" samt att läsa data och förstå det så kallade JSON-formatet med hjälp av Python.
Vad är ett API?
API står för "Application Programming Interface" och är ett sätt att komma åt stora mängder data. API:er finns på internet, både öppna API:er som alla kan komma åt eller API:er som behöver en s.k API-nyckel. Men vad är då ett API? Jo, ett API är ett sätt att komma åt olika typer av data genom att skicka en s.k "request" eller förfrågning till en webbserver som sedan svarar. Det finns många olika typer av API:er, t.ex. API:er för att få vädret på en viss plats, för att få receptinformation (vilket vi kommer använda i detta fall), för att analysera bilder och mycket, mycket mer.
Hur kommunicerar man med ett API?
Det är enkelt att kommunicera med ett API. Ibland kan man göra det direkt i webbläsaren. Det finns två typer av API-förfrågningar: GET och POST. Den första metoden kan du oftast komma åt direkt via din webbläsare. Då skickas en förfrågan till servern som själv letar i sitt datasystem och sedan skickar ett svar. POST-förfrågningar kan du oftast inte skicka via din webbläsare. En POST-förfrågning laddar istället upp data till servern som API:et du frågar efter befinner sig på istället för att hämta data. Här nedanför hittar du en liten illustration om hur ett API fungerar.
Värt att notera är att vi endast går igenom grunderna kring API:er i denna guide. Det finns andra typer av API-förfrågningar som t.ex. PUT, men GET och POST är förmodligen de viktigaste typerna av API-förfrågningar.
Värt att notera är att vi endast går igenom grunderna kring API:er i denna guide. Det finns andra typer av API-förfrågningar som t.ex. PUT, men GET och POST är förmodligen de viktigaste typerna av API-förfrågningar.
Så här funkar GET-förfrågningar, enkelt förklarat:
API:er i Python samt registrering
Introduktion
För att använda ett API i Python brukar de allra flesta använda sig av modulen "requests". Installera den med hjälp av PyCharms pakethanterare.
I detta fall kommer vi att använda oss av ett API för recept. Vi måste först registrera oss hos företaget som har API:et. KlassKlur har valt ett gratis-api. Antingen kan din lärare skapa ett konto och dela med sig sin personliga API-nyckel, eller så kan du skapa ett konto med din skolas email. För att hitta recept kommer vi att använda en tjänst som heter Edamam. Där finns ett gratisalternativ med 5000 gratis API-förfrågningar på månad. Registrera dig på Edamam genom att klicka här.
I detta fall kommer vi att använda oss av ett API för recept. Vi måste först registrera oss hos företaget som har API:et. KlassKlur har valt ett gratis-api. Antingen kan din lärare skapa ett konto och dela med sig sin personliga API-nyckel, eller så kan du skapa ett konto med din skolas email. För att hitta recept kommer vi att använda en tjänst som heter Edamam. Där finns ett gratisalternativ med 5000 gratis API-förfrågningar på månad. Registrera dig på Edamam genom att klicka här.
När du har skapat ett konto på API-tjänsten
När du skapat och verifierat ett konto på Edamam så måste du skapa en "applikation". Skriv ett namn och en beskrivning för applikationen. Vi behöver ha API:et "Recipes", så välj det när Edamam frågar efter vilka tjänster du vill aktivera.
Alla API:er fungerar lite olika, men vi behöver ta reda på vilken eller vilka URL (dvs. webadresser) som vi ska skicka en förfrågning till. Vi måste därför hitta information om detta. Det gör man oftast i API-tjänstens "documentation" (dokumentation). Edamams dokumentation för deras recept-API hittar du genom att klicka här. Observera att länken kan ändras, om detta skulle vara fallet så meddela gärna oss och googla på "Edamam recipe API" eller liknande för att se om du får några träffar.
I Edamams dokumentation står det så här: "The base URL is https://api.edamam.com and you obtain the full URL by appending request’s path to the base URL, like https://api.edamam.com/search".
Och eftersom att vi ska söka efter recept så ska vi använda länken "https://api.edamam.com/search". Om vi tittar lite längre ner på sidan så finns det en tabell med parametrar som vi kan använda i vår förfrågan till servern.
Vi måste först se till att alla parametrar som måste ingå i vår förfrågan till servern finns där. De tre parametrarna är q (vilket sökord vi vill använda för att söka i Edamams databas) samt app_id och app_key, som är applikationsnycklarna som vi fått tidigare.
Nu ska vi lära oss att formatera en förfrågning till en API-server. Du börjar med bas-url:et för förfågningar, vilket i vårt fall är "https://api.edamam.com/search". Sedan lägger du till en valfri parameter, t.ex. app_id genom att använda dig av ett frågetecken och sedan ett syntax som liknar det du använder när du definierar en variabel i Python. Det kan låta lite krångligt, men så här ska början av URL-et se ut om man bara tittar på strukturen:
https://api.edamam.com/search?app_id=DITT_APP_ID_HÄR
Byt ut "DITT_APP_ID_HÄR" mot app-id:t som Edamam har gett dig.
Nu ska vi lägga till en till parameter, förslagsvis "app_key". Mellan parametrar i en förfrågan används inte frågetecken, utan du använder dig istället av "och-tecken", på detta sätt:
https://api.edamam.com/search?app_id=DITT_APP_ID_HÄR&app_key=DIN_APP_KEY_HÄR
Byt ut "DITT_APP_ID_HÄR" och "DIN_APP_KEY_HÄR" mot app-id:t respektive app-key:n/appnyckeln som Edamam har gett dig.
Observera även att, till skillnad från exempelvis variabler i Python, behöver du inte använda citationstecken (dvs. "-tecken) för att definera t.ex. api-nycklar i din förfrågan till Edamam.
Om vi nu vill söka efter recept med apelsiner inblandade, vore vår förfrågan till Edamam´s API se ut så här:
https://api.edamam.com/search?app_id=DITT_APP_ID_HÄR&app_key=DIN_APP_KEY_HÄR&q=oranges
Byt ut "DITT_APP_ID_HÄR" och "DIN_APP_KEY_HÄR" mot app-id:t respektive app-key:n/appnyckeln som Edamam har gett dig.
Vi använder det engelska namnet på apelsiner, oranges, eftersom att Edamam är en tjänst med mestadels engelska recept.
Testa nu att byta ut vissa saker i URL:et för vår API-förfrågan, angivna ovan och sedan kopiera och klistra in länken här ovanför i en valfri webbläsare, t.ex Google Chrome. Klicka på "Enter"-knappen på din dator eller liknande för att skicka en förfrågan till Edamams servar, precis som när du navigerar till vilken hemsida som helst. Efter ett tag vore du något likt detta som svar:
Alla API:er fungerar lite olika, men vi behöver ta reda på vilken eller vilka URL (dvs. webadresser) som vi ska skicka en förfrågning till. Vi måste därför hitta information om detta. Det gör man oftast i API-tjänstens "documentation" (dokumentation). Edamams dokumentation för deras recept-API hittar du genom att klicka här. Observera att länken kan ändras, om detta skulle vara fallet så meddela gärna oss och googla på "Edamam recipe API" eller liknande för att se om du får några träffar.
I Edamams dokumentation står det så här: "The base URL is https://api.edamam.com and you obtain the full URL by appending request’s path to the base URL, like https://api.edamam.com/search".
Och eftersom att vi ska söka efter recept så ska vi använda länken "https://api.edamam.com/search". Om vi tittar lite längre ner på sidan så finns det en tabell med parametrar som vi kan använda i vår förfrågan till servern.
Vi måste först se till att alla parametrar som måste ingå i vår förfrågan till servern finns där. De tre parametrarna är q (vilket sökord vi vill använda för att söka i Edamams databas) samt app_id och app_key, som är applikationsnycklarna som vi fått tidigare.
Nu ska vi lära oss att formatera en förfrågning till en API-server. Du börjar med bas-url:et för förfågningar, vilket i vårt fall är "https://api.edamam.com/search". Sedan lägger du till en valfri parameter, t.ex. app_id genom att använda dig av ett frågetecken och sedan ett syntax som liknar det du använder när du definierar en variabel i Python. Det kan låta lite krångligt, men så här ska början av URL-et se ut om man bara tittar på strukturen:
https://api.edamam.com/search?app_id=DITT_APP_ID_HÄR
Byt ut "DITT_APP_ID_HÄR" mot app-id:t som Edamam har gett dig.
Nu ska vi lägga till en till parameter, förslagsvis "app_key". Mellan parametrar i en förfrågan används inte frågetecken, utan du använder dig istället av "och-tecken", på detta sätt:
https://api.edamam.com/search?app_id=DITT_APP_ID_HÄR&app_key=DIN_APP_KEY_HÄR
Byt ut "DITT_APP_ID_HÄR" och "DIN_APP_KEY_HÄR" mot app-id:t respektive app-key:n/appnyckeln som Edamam har gett dig.
Observera även att, till skillnad från exempelvis variabler i Python, behöver du inte använda citationstecken (dvs. "-tecken) för att definera t.ex. api-nycklar i din förfrågan till Edamam.
Om vi nu vill söka efter recept med apelsiner inblandade, vore vår förfrågan till Edamam´s API se ut så här:
https://api.edamam.com/search?app_id=DITT_APP_ID_HÄR&app_key=DIN_APP_KEY_HÄR&q=oranges
Byt ut "DITT_APP_ID_HÄR" och "DIN_APP_KEY_HÄR" mot app-id:t respektive app-key:n/appnyckeln som Edamam har gett dig.
Vi använder det engelska namnet på apelsiner, oranges, eftersom att Edamam är en tjänst med mestadels engelska recept.
Testa nu att byta ut vissa saker i URL:et för vår API-förfrågan, angivna ovan och sedan kopiera och klistra in länken här ovanför i en valfri webbläsare, t.ex Google Chrome. Klicka på "Enter"-knappen på din dator eller liknande för att skicka en förfrågan till Edamams servar, precis som när du navigerar till vilken hemsida som helst. Efter ett tag vore du något likt detta som svar:
Om du inte får detta som svar, se till att alla dina API-nycklar och app-id´s är korrekta. Om du har fått detta som svar kan du nu gå vidare till nästa del av lektionen där vi lär oss om hur man kan använda detta API i Python.