API

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 23. december 2021; checks kræver 39 redigeringer .

API ( IPA : [ ˌ e ɪ . p i ˈ a ɪ ]; forkortelse fra engelsk.  Application Programming Interface [ 1 ] ) er en beskrivelse af, hvordan et computerprogram interagerer med andre. Normalt inkluderet i beskrivelsen af ​​en eller anden internetprotokol (f.eks. SCIM [2] ), softwareramme ( ramme [3] ) eller funktionsopkaldsstandard for operativsystemet [4] . Ofte implementeret af et separat softwarebibliotekeller en operativsystemtjeneste . Bruges af programmører, når de skriver alle mulige applikationer .

Kort sagt er dette et sæt komponenter, som et computerprogram (bot eller hjemmeside) kan bruge et andet program med.

Udnævnelse

En API (Application Programming Interface) forenkler programmeringsprocessen, når der bygges applikationer ved at abstrahere den underliggende implementering og kun levere de objekter eller handlinger, som udvikleren har brug for. Hvis en GUI til en e-mail-klient kan give brugeren en knap, der vil gennemgå alle trinene for at hente og fremhæve nye e-mails, så kan File I/O API give udvikleren en funktion, der kopierer en fil fra en placering til en anden uden at kræve, at udvikleren forstår filoperationer.systemer, der foregår bag kulisserne. [5]

API som et middel til applikationsintegration

Hvis et program (modul, bibliotek) betragtes som en sort boks , så er API'en et sæt "håndtag", der er tilgængelige for brugeren af ​​denne boks, og som han kan dreje og trække.

Softwarekomponenter interagerer med hinanden gennem API'er. I dette tilfælde danner komponenter normalt et hierarki - komponenter på højt niveau bruger API'et for komponenter på lavt niveau, og disse bruger igen API'et for komponenter på endnu lavere niveau.

Ifølge dette princip bygges dataoverførselsprotokoller over internettet . Standardprotokolstakken ( OSI-netværksmodel ) indeholder 7 lag (fra det fysiske bitoverførselslag til applikationsprotokollaget som HTTP og IMAP ). Hvert lag bruger funktionaliteten fra det forrige (“nedre”) dataoverførselslag og giver igen den ønskede funktionalitet til det næste (“øvre”) lag.

Begrebet en protokol er tæt på begrebet API. Begge er abstraktioner af funktionalitet, kun i det første tilfælde taler vi om dataoverførsel, og i det andet - om interaktionen mellem applikationer.

Funktions- og klassebibliotekets API indeholder en beskrivelse af funktioners signaturer og semantik .

Funktionssignatur

En funktionssignatur er en del af en generel funktionserklæring, der gør det muligt for oversættere at identificere funktionen blandt andre. Forskellige programmeringssprog har forskellige ideer om signaturen af ​​en funktion, hvilket også er tæt forbundet med mulighederne for funktionsoverbelastning i disse sprog.

Nogle gange skelnes der mellem en kaldesignatur og en funktionsimplementeringssignatur . Kaldsignaturen kompileres normalt i overensstemmelse med den syntaktiske konstruktion af et funktionskald, idet der tages højde for signaturen for denne funktions omfang, navnet på funktionen, rækkefølgen af ​​faktiske typer af argumenter i kaldet og typen af resultat. Implementeringssignaturen involverer normalt nogle elementer fra den syntaktiske konstruktion af funktionsdeklarationen: funktionsomfangsspecifikationen, dens navn og sekvensen af ​​formelle argumenttyper.

For eksempel i programmeringssproget C++ identificeres en simpel funktion entydigt af compileren ved dens navn og rækkefølgen af ​​dens argumenttyper, som udgør funktionssignaturen i det pågældende sprog. Hvis funktionen er en metode fra en klasse, vil klassenavnet også deltage i signaturen.

I programmeringssproget Java er signaturen for en metode dens navn og rækkefølgen af ​​parametertyper; typen af ​​den returnerede værdi er ikke involveret i signaturen. [6]

Funktionssemantik

En funktions semantik er en beskrivelse af, hvad en given funktion gør. En funktions semantik omfatter en beskrivelse af, hvad der er resultatet af evalueringen af ​​funktionen, hvordan og af hvad dette resultat afhænger. Normalt afhænger udførelsesresultatet kun af værdierne af funktionsargumenterne, men i nogle moduler er der et begreb om tilstand. Så kan resultatet af funktionen afhænge af denne tilstand, og derudover kan resultatet være en tilstandsændring. Logikken bag disse afhængigheder og ændringer er relateret til funktionens semantik. En komplet beskrivelse af funktioners semantik er den eksekverbare kode for funktionen eller den matematiske definition af funktionen.

operativsystem API'er. API-diversitetsproblemer

Næsten alle operativsystemer ( UNIX , Windows , OS X , Linux osv.) har en API, som programmører kan oprette applikationer til det pågældende operativsystem med. Operativsystemernes vigtigste API er et sæt systemkald .

I softwareindustrien spiller fælles standard-API'er for standardfunktionalitet en vigtig rolle, da de sikrer, at alle programmer, der bruger en fælles API, fungerer lige godt, eller i det mindste på en typisk velkendt måde. I tilfælde af GUI API'er betyder det, at programmer vil have en lignende brugergrænseflade, hvilket gør det lettere at lære nye softwareprodukter.

På den anden side gør forskelle i API'erne for forskellige operativsystemer det meget vanskeligt at portere applikationer mellem platforme. Der er forskellige metoder til at komme uden om denne kompleksitet - skrivning af "mellemliggende" API'er (API'er til grafiske grænseflader wxWidgets , GTK osv.), skrivning af biblioteker, der kortlægger systemkald fra ét OS til systemkald fra et andet OS (runtime-miljøer såsom Wine , cygwin og etc.), introduktion af kodningsstandarder i programmeringssprog (for eksempel C -standardbiblioteket ), skrivning af fortolkede sprog, der kan implementeres på forskellige platforme ( sh , Python , Perl , PHP , Tcl , Javascript , Ruby , etc.).

Desuden har en programmør ofte flere forskellige API'er til sin rådighed for at opnå det samme resultat. I dette tilfælde implementeres hver API normalt ved hjælp af API'er af softwarekomponenter på et lavere abstraktionsniveau.

For eksempel: for at se linjen " Hej verden!" ”, skal du blot oprette et HTML -dokument med en minimal titel og en simpel krop, der indeholder den givne streng. Når browseren åbner dette dokument , vil browserprogrammet videregive filnavnet (eller en allerede åben filbeskrivelse ) til biblioteket, der behandler HTML-dokumenter, som igen ved hjælp af operativsystemets API vil læse denne fil og forstå dens enhed , kald derefter sekventielt gennem API af biblioteket af standard grafiske primitiver for operationer som "ryd vinduet", "skriv "Hej, verden!" i den valgte skrifttype. Under udførelsen af ​​disse operationer vil det grafiske primitive bibliotek henvende sig til vinduesgrænsefladebiblioteket med de relevante anmodninger, dette bibliotek vil allerede henvende sig til operativsystemets API for at skrive data til videokortets buffer .

Samtidig er der faktisk flere mulige alternative API'er på næsten alle niveauer. For eksempel: vi kunne skrive kildedokumentet ikke i HTML, men i LaTeX , vi kunne bruge enhver browser til visning. Derudover bruger forskellige browsere forskellige HTML-biblioteker, og derudover kan alt dette bygges ved hjælp af forskellige primitive biblioteker og på forskellige operativsystemer.

De vigtigste kompleksiteter ved eksisterende lagdelte API-systemer er således:

Mest berømte API'er

operativsystemer
Grafiske grænseflader
Lydgrænseflader
Autentificeringssystemer

Web API

Brugt i webudvikling - det indeholder normalt et bestemt sæt HTTP - anmodninger, samt en definition af strukturen af ​​HTTP-svar, som de bruger XML- eller JSON -format til udtryk for .

Web-API'en er næsten synonymt med en webservice, selvom den seneste Web 2.0- trend er skiftet fra SOAP- til REST - kommunikation. Webgrænseflader, der giver en kombination af flere tjenester i nye applikationer, er kendt som mashups.

Eksempler: MediaWiki API

Se også

Noter

  1. Oversat som "applikationsprogrammeringsgrænseflade", "applikationsprogrammeringsgrænseflade". Det forenklede translittererede slangnavn [ apiʹ ] bruges ofte. Forkortede oversættelsesmuligheder bruges også - "applikationsgrænseflade", "softwaregrænseflade".
  2. System for Cross-Domain Identity Management: Protocol draft-ietf-scim-api-19 . Hentet 12. oktober 2018. Arkiveret fra originalen 7. juli 2017.
  3. Spring Framework 5.3.1 API . Hentet 12. oktober 2018. Arkiveret fra originalen 10. oktober 2018.
  4. Linux-kernens brugerrum API-vejledning . Hentet 12. oktober 2018. Arkiveret fra originalen 12. oktober 2018.
  5. Clarke, Steven Måling af API-anvendelighed . Dr. Dobb's (2004). Hentet 9. juli 2021. Arkiveret fra originalen 3. marts 2022.
  6. Java-sprogspecifikation. Kapitel 8.4.2. "Metodesignatur" . Java-sprogspecifikation . docs.oracle.com. Hentet 24. februar 2020. Arkiveret fra originalen 3. maj 2020.