Application Programming Interface
Från Wikipedia
Ett API eller Application Programming Interface är en regeluppsättning för hur en viss programvara kan kommunicera med annan programvara. Regeluppsättningen beskrivs i princip alltid som en uppsättning funktionsanrop (API:ets kontrakt) som under ordnade former ger tillgång till en viss funktionalitet. Man säger ofta att man kapslar in funktionaliteten bakom ett API.
Innehåll |
[redigera] Definition
De flesta kommersiella programvaror i dagens läge är applikationer som knyter samman annan mjukvarufunktionalitet i olika former och skapar en meningsfull helhet, och denna sammanknytning sker med hjälp av API:er. API:er ger alltså möjlighet att på ett strukturerat sätt återanvända redan utvecklad och kvalitetssäkrad mjukvara som har kapslats in i någon form av kodbibliotek (eng library). I någon mening kan man säga att ett API är de yttre attributen för en abstrakt datatyp.
Ett välformat API är till sin natur lite 'abstrakt' i den meningen att det beskriver en funktionalitet utan att berätta något om hur denna funktionalitet implementeras. (Ett API som förutsätter något om den underliggande implementationen sägs vara icke välformat.)
[redigera] Olika klasser av API:er
Man kan särskilja två olika typer av API:er:
- API:er som ger tillgång till olika typer av systemresurser, ofta utan att fästa avseende vid vilket operativsystem programmet ska användas på. Exempel:
- Skrivare
- Filhantering
- Grafikhantering
- Radiokretsar (exempelvis WLAN eller Bluetooth)
- I detta fall talar man om drivrutins-API:er. API:et används som ett lager mellan högnivåprogrammering och lågnivåresurser (systemresurser).
- API:er som ger tillgång till högnivåfunktionalitet som återanvänds på ett eller annat sätt. Här rör det sig ofta om mjukvara som tillhandahålls av andra leverantörer för olika typer av datahantering eller beräkningar. Exempel:
- Matrisberäkningsbibliotek
- API:er för att sända email
- I detta fall talar man ofta om kommersiella API:er eller högnivå-API:er.
[redigera] Implementation av ett API
Den programkod som utför det API:et är tänkt att utföra för kallas API:ets implementation. Det existerar ofta ett flertal implementationer för ett visst API, exempelvis för olika operativsystem såsom Windows, olika UNIX-dialekter och MacOS. (MacOS X är i själva verket också en UNIX-dialekt.) Ett API kan implementeras i snart sagt vilket programspråk som helst i vilken operativsystemsmiljö som helst, så länge som det är möjligt för en programmerare att använda det.
[redigera] Generella och specifika API:er
Man skiljer också på generella och specifika API:er.
- Ett generellt API beskriver ett generellt sätt att använda en viss systemresurs eller annan resurs. Exempel är printer-API:er och grafik-API:er såsom OpenGL. Denna typ av API:er tillåter en mjukvaruutvecklare att skapa en programvara som är väldigt flexibel och som kan flyttas mellan olika hårdvaruarkitekturer och operativsystem utan att ändras.
- Ett specifikt API ger tillgång till en specifik resurs, ofta en hårdvaruresurs såsom ett specialiserat GPS-chip eller liknande. Denna typ av API:er är vanliga på mer specialiserade hårdvaruarkitekturer.
[redigera] Välkända API:er
API:er som de flesta av oss kommer i kontakt med på ett eller annat sätt, exempelvis när vi installerar ett nytt program på vår dator, är
[redigera] API:ets kontrakt
Kontraktet för ett API är en högnivåbeskrivning av hur själva API:et skall fungera. I och med att man definierar ett API i kontraktsform möjliggör man också förflyttning av kod mellan olika datorplattformar, såväl som inkapsling av den tänkta funktionaliteten.
[redigera] Ett exempel
Kontraktet för ett matematikbibliotek som tillhandahåller funktionerna Min(...) och Max(...) för heltal kan se ut på följande sätt:
Kontrakt för MinMax --- Funktioner: int Max(int a, int b) Funktion: Max(...) returnerar det större talet av de två inparametrarna a och b Returvärdets datatyp är heltal (int) Sidoeffekter: Inga. int Min(int a, int b) Funktion: Min(...) returnerar det mindre talet av de två inparametrarna a och b Returvärdets datatyp är heltal (int) Sidoeffekter: Inga.