Inleiding tot APIs: Een beginnende gids voor het begrijpen en gebruiken van APIs in software engineering

Heeft u ooit gereflecteerd hoe u in uw favoriete toepassingen als Facebook, Hashnode, dev.to, LinkedIn enzovoort kunt inloggen? Ik weet dat ik uw aandacht heeft gehaald en dat u snel begonnen bent te denken. Of heeft u zich ge想象eerd hoe gemakkelijk het was om de WakaNow vluchtapplicatie te openen en de goedkoopste en meest betaalbare tarieven uit de hele wereld te krijgen? Ook voetballiefhebbers worden niet achteraf gehouden, want ze kunnen scores in realtime raadplegen.

De antwoorden op alle deze vragen zijn dat ze met elkaarsystemen communiceren om deze data te verkrijgen of details te verifiëren, en de manier waarop deze communicatie plaatsvindt is via een API.

In dit artikel zal de concept van API onthuld worden en wordt een zeer helder en toepasselijk begrip van wat APIs zijn, hun typen en hun wijze van operationeel zijn geleerd.

Een API, afkorting van Application Programme Interface, is eenvoudigweg een hulpmiddel waarmee systemen of technologieën met elkaar kunnen communiceren door informatie of data te delen. Het kan verder worden uitgelegd als een laag waarmee systemen met elkaar kunnen communiceren volgens een protocol of standaard waarmee de deling plaatsvindt.

APIs zijn belangrijk omdat ze toestaan dat systemen en technologieën met elkaar interacteren, data delen en functionaliteit uitlenen, om samen krachtige en efficiente systemen te maken. Bovendien geven APIs ontwikkelaars de superkracht om toepassingen samen te brengen om een specifieke taak uit te voeren. Bijvoorbeeld, een modeblog en integreren Flutterwave API om klanten de mogelijkheid te geven te betalen voor ontwerpen of seminaries, u kunt ook uw Google-account gebruiken om in elke applicatie te aanmelden die eraan gekoppeld is.

APIs kunnen gebruikt worden om data van derden te halen en informatie uit te wisselen, waardoor we als Software Engineers erg nuttige dingen kunnen doen.

Laat ons deze analogie aan de gang brengen, u wilt studeren aan een universiteit. U moet een reeks van processen volgen die ervoor zorgen dat u toetstdient voor examens en met de resultaten een applicatie aan uw gekozen instelling doet. U moet niet direct naar de Admissions Officer gaan voor een aanvraag, maar kunt eenvoudig hun portal bezoeken, uw gegevens invoeren en documenten uploaden. Terwijl u wacht op toelating gebeurt er een reeks van dingen achter de schermen die u niet weet, maar krijgt toelating als de vereisten zijn ingevuld.

Het gehele proces is als volgt, we willen communiceren met de Universiteitsadmissionskantoor en omdat we de Admissionskantoor niet direct kunnen bereiken, gebruiken we een API-laag, die in dit geval de Schoolportal is die u de Endpoint zal noemen. Elke Endpoint heeft zijn protocol nodig en de verwachte resultaten. In dit voorbeeld beschermt de schoolportal u tegen alle complexe dingen die zich in het admissionskantoor afspelen.

Imagineer er geen toegangsportaal was, dan moest u naar het Universiteits Admissiekantoor gaan om uw gegevens in te dienen, wat tijd kost en geen fouten vrij lijkt te zijn.

Om twee softwaretoepassingen via het internet te verbinden, stuurt één programma, bekend als de cliënt, een verzoek naar de API van de andere toepassing. De cliënt vraagt een resource van de database van de app of vraagt of een actie op de server wordt uitgevoerd.

Na het ontvangen en valideren van het verzoek van de cliënt neemt de API de gewenste actie en geeft een antwoord terug aan de cliënt. Deze reactie bevat de status van het verzoek (voltooid of afgewezen) en eventuele gevraagde resources door de cliënt.

Fig 1. Het werken van een API

Er zijn ongeveer vier verschillende soorten APIs, die worden uitgelegd.

Enkele voorbeelden van publieke APIs zijn; Bitquery, Adoptapet, covalenthq.

Een private API of interne API is een type API die alleen beschikbaar is voor de ontwikkelaars of individuen die hem hebben gebouwd. Het kan alleen worden aangesproken wanneer een uitnodiging is verzonden door de eigenaar(s) aan de 3de partij.

Enkele voorbeelden van private APIs zijn;

  1. Twilio’s Programmable Voice API

  2. Stripe’s Connect API

  3. Google Maps’ private APIs voor bedrijven

  4. Salesforce’s Metadata API

  5. GitHub’s GitHub Enterprise API

Een applicatieprogrammeeringsinterface (API) die door een bedrijf of organisatie wordt aangeboden, om buitenstaanders zoals ontwikkelaars of partners toe te staan om met hun diensten, gegevens of platform te communiceren en te interageren, wordt een partnerAPI genoemd, ook bekend als een derdepartijAPI of ontwikkelaarsAPI. Deze API’s zijn bedoeld om het gemakkelijker te maken om verschillende systemen, programma’s of diensten te integreren.

Organisaties die willen dat hun goederen of diensten nuttiger worden of die samenwerking aanmoedigen met buitenstaanders ontwikkelaars of bedrijven, bieden vaak partnerAPI’s aan. Met de hulp van deze API’s kunnen partners applicaties, hulpmiddelen of diensten maken die gebruik maken van de gegevens, functies of technologie van het bedrijf.

Enkele voorbeelden van partnerAPI’s zijn;

  1. Twitter API voor partners

  2. Spotify voor ontwikkelaars API

  3. Dropbox API voor partners

  4. eBay Developers Program API

  5. Amazon Product Advertising API

Gecombineerde APIs, ook wel aangeduid als aggregaties APIs of mashup APIs, zijn soorten APIs die informatie of functionaliteit mengen en samenvatten uit verschillende onderliggende APIs of services in één interface. Deze APIs vereenvoudigen het integratieproces en bieden een geïntegreerde weergave van verschillende gegevensbronnen aan door ontwikkelaars de mogelijkheid te geven om met verschillende services te communiceren en interactie te hebben via één API.

Wanneer programmeurs continue informatie nodig hebben of meerdere acties moeten uitvoeren vanuit verschillende bronnen, zijn samengestelde API’s nuttig. Een samengestelde API laat ontwikkelaars toe om met één verzoek gegevens of acties uit verschillende diensten te bereiken in plaats van aparte queries naar elke API te sturen. Het integratieproces wordt geoptimaliseerd, de complexiteit wordt verminderd en de efficiëntie wordt verhoogd als gevolg.

Hier is een voorbeeld van een samengestelde API die weersgegevens van verschillende weersdiensten verzameld:

  1. WeatherAPI

  2. OpenWeatherMap API

  3. Weatherbit API

Om weersgegevens van deze vele leveranciers te verzamelen en ontwikkelaars toegang te geven tot een enkele weergaveinterface voor weersgegevens, kan een samengestelde API worden gemaakt. Dit laat ontwikkelaars toe om weergegevens van meerdere bronnen te verkrijgen met behulp van slechts één API-verzoek.

Web APIs zijn de meest gebruikte omdat de meeste van onze dagelijkse activiteiten zich om de webwereld bevinden. Web APIs zijn standaarden die ervoor zorgen dat er eenheid bestaat tussen verschillende browsers. Het gaat over beide kanten van de communicatie. Web APIs, veelal genoemd als Application Programming Interfaces (APIs), zijn interfaces die door webdiensten of apps beschikbaar gesteld worden, die online communicatie en interactie tussen hen en andere softwareprogramma’s mogelijk maken. Ontwikkelaars kunnen via web APIs op programmatische wijze toegang krijgen tot bepaalde mogelijkheden, diensten of gegevens uit een webtoepassing of -dienst.

1. RESTful APIs

RESTful APIs, wat staat voor Representational State Transfer Application Programming Interface, is een set van standaarden die computers ervoor maken om met elkaar over het web te communiceren volgens de ontwerpprincipes van de REST-architectuur (of REpresentational State Transfer).

Een deel van een REST API omvat

  1. Request —–→ Response

  2. Bewerking – GET, POST, PATCH, UPDATE, DELETE

  3. Eindpunt -Url

  4. Parameter/Body

  5. Kopteksten

Fig 2 Diagram van een REST API

De belangrijkste beginselen van REST omvatten:

  1. Client-serverarchitectuur: REST scheidt de client- en servercomponenten, zodat ze onafhankelijk van elkaar kunnen evolueren. De client stuurt aanvragen naar de server en de server verwerkt deze aanvragen en stuurt antwoorden terug.

  2. Statelessness: REST is stateless, wat betekent dat elke aanvraag van de client naar de server alle nodige informatie moet bevatten om de aanvraag te begrijpen en te verwerken. De server slaat geen clientcontext tussen aanvragen op, wat het scalen vergemakkelijkt en betere caching toestaat.

  3. Uniform Interface: REST bevordert een uniforme set van interfaces en operaties, typisch met standaard HTTP-methodes als GET, POST, PUT en DELETE. Elke resource in een RESTful-systeem wordt uniek geidentificeerd door een URL (Uniform Resource Locator).

  4. Resource-gebaseerd: REST behandelt alles als een resource, zoals data-entiteiten, services of collecties. Elke resource heeft een unieke identifier en kan worden aangetoond en gehandhaafd met behulp van standaard HTTP-methodes.

  5. Weergave van resources: Resources in REST worden weergegeven met behulp van een specifiek formaat, zoals JSON (JavaScript Object Notation) of XML (eXtensible Markup Language). De server stuurt weergaven van resources terug naar de client, die gegevens, metadata of hypermedia-koppelingen kunnen bevatten.

  6. Stateless Interacties: Elke verzoek van de client naar de server is zelfstandig en wordt niet afhankelijk van enige voorgaande verzoek of status op de server behandeld. Dit maakt scalering mogelijk, omdat de server geen nood heeft aan client-sessie-informatie bij te houden.

Voordelen van een REST-API

  1. Eenvoudig en gestandaardiseerd

  2. Scalable en stateless

  3. Hoogwaardig en cachebaar

2. SOAP APIs

SOAP, afkorting van Simple Object Access Protocol, is de webservice die voldoet aan de SOAP web services specificatie. Het is een populair berichtprotocol dat XML gebruikt als formaat, een goed gedefinieerd schema en een standaardprotocol voor gebruikers. Het is gedefinieerd door de World Wide Web Consortium. SOAP-protocollen omvatten vele internetcommunicatieprotocollen, in het bijzonder HTTP, SMTP en TCP/IP.

Fig 3 A SOAP API schema

Voordelen van het gebruik van de SOAP API

  1. Gebruik van taal, platform en transport is onafhankelijk.

  2. Vereenvoudigt werking in geïntegreerde bedrijfsomgevingen.

  3. Biedt uitgebreide voorgebouwde extensibiliteit in de vorm van de WS*-standaarden.

  4. Ingebouwde foutafhandeling.

  1. RPC.

Het Remote Procedural Call (RPC) protocol is een manier om meerdere parameters te versturen en resultaten te ontvangen. Het is een afstandsgedeelte aanroep en bestaat niet op uw lokale machine, maar moet worden geïmplementeerd van waaruit het wordt aangeroepen. Het is asynchroon in het geval dat u een reactie moet krijgen om als succes te worden gemarkeerd. Het is een eenvoudige interactie tussen de Client en de server. RPC-APIs veroorzaken operationele operaties of procedures. RPC kan twee verschillende talen gebruiken: JSON en XML.

Fig 4 AN RPC protocol

  1. GraphQL APIs

GraphQL is een querytaal voor APIs die clients toestaat specifieke gegevens aan te vragen en de reactie aan te passen aan hun behoeften.

Enkele voorbeelden van GraphQL-APIs

GitHub GraphQL API, Shopify GraphQL API, SpaceX GraphQL API, Yelp GraphQL API, Twitter GraphQL API (Twitter API v2).

API-protocollen vergelijken

REST

SOAP

RPC

GraphQL

Werkt met XML, JSON, HTTP en eenvoudige tekst

Werkt met XML door ontwerp

Vereist dat gebruikers de procedure namen kennen

Werkt met HTTP

Werkt goed met gegevens

Werkt goed met processen (acties)

Specifieke parameters en volgorde

Minder complexe beveiliging

Geavanceerde beveiliging

Documentatie kan worden aangevuld met hypermedia

Het meest complex voor ontwikkelaars om te gebruiken

Vereist uitgebreide documentatie

Verzoekmethode is GET, PUT, DELETE, PATCH, UPDATE.

Verzoekmethode is POST

Verzoekmethode is POST

Verzoekmethode is POST

A. Endpoints

Een API-eindpunt is een punt of einde van een communicatiekanaal. Bij het interacteren van een API met een ander systeem worden de aanrakingpunten van deze communicatie Endpoints genoemd. letterlijk gezegd, de plek waar APIs bronnen verzenden en waar bronnen vertrekken wordt een Endpoint genoemd. In APIs wordt een endpoint meestal een uniforme resource locator (URL) genoemd die de locatie van een resource op de server aangeeft.Een voorbeeld van een Endpoint is

Twitter API-eindpunt voorbeeld

De Twitter API biedt gegevens over tweets, directe berichten, gebruikers en meer.

Stel dat je de inhoud van een specifiek tweet wilt ophalen. Om dit te doen, kun je de tweet zoek eindpunt gebruiken, die de URL api.twitter.com/2/tweets{id} heeft (waar {id} de unieke identificator van het tweet is).

B. Verzoeken en Reacties

Een API-verzoek is een bericht dat van de Client naar de server wordt verzonden. Een API-verzoek is een aanvraag bij een API om toegang te krijgen of gegevens te wijzigen of een specifieke actie uit te voeren. Een API-reactie is de gegevens of informatie die wordt teruggegeven als reactie op een API-verzoek.

Bijvoorbeeld, als een gebruiker op de onderstaande hyperlink klikt;

<a href=’http://localhost:2400/categories/01/flavours ’>

Toon alle smaken beschikbaar in de smaakcategorie

</a>

Het HTTP-verzoekbericht zal worden verzonden als:

GET /categories/01/flavours HTTP/1.1

Host: localhost:2400

User-Agent: Chrome/5.0 [compatibel, Windows 10]

API aanvraag

1. Kopieer codeGET https://api.com/categories/flavours

API antwoord

1. Kopieer codeHTTP/1.1 200 OK

2. Content-Type: application/json

3.

4. {

5. "id": "01",

6. "flavours": "Chocolate"

7. }

We kunnen uit deze aanvraag zien dat het Endpoint is URL – /categories/01/flavours.

De aanvraagmethode is GET, de HTTP specificatie is 1.1, de domeinnaam is localhost, de poort is 2400, Flavours is het resource, en de user-agent geeft de browser en het besturingssysteem aan.

C. HTTP Methoden (GET, POST, PUT, DELETE)

APIs die de HTTP-protocol gebruiken gebruiken HTTP aanvraagmethodes (ook bekend als “HTTP verbs”) voor het verzenden van clientaanvragen naar servers. De meest gebruikte HTTP aanvraagmethodes zijn GET, POST, PUT en DELETE.

  1. GET wordt gebruikt door een client om gegevens van een server op te halen,

  2. PUT vervangt bestaande gegevens of maakt gegevens aan als die niet bestaan,

  3. POST wordt voornamelijk gebruikt om nieuwe resources aan te maken,

  4. PATCH wordt gebruikt om data van een resource deels bij te werken, en

  5. DELETE verwijdert gegevens of resources die door de client op de server zijn opgegeven.

D. API Veiligheid – Authenticatie en Autorisatie

Deze twee termen kunnen eruitzien alsof ze verwant zijn, maar ze hebben eigenlijk twee verschillende functies. Authenticatie gaat over de verificatie van gebruikers of identiteit terwijl Autorisatie gaat over de toegang die een gebruiker heeft of de toestemming die is gegeven voor een actie. Ze zijn essentieel voor de veiligheid van API’s, een populaire methode voor het authenticaten en autoriseren van gebruikers is OAuth 2.0.

Verschillende typen autorisatie

Er zijn verschillende methoden voor autorisatie. De volgende zijn verschillende typen API-autorisatie die u mogelijk zult tegenkomen:

E. API-sleutels en tokens

API-sleutels zijn strings van tekst die de identificatie en autorisatie van de client-applicatie verlenen. In andere woorden geven ze de identiteit van de applicaties aan die op de server bellen en bepalen of de aanroepende applicaties toegang tot de API-server hebben. Ze worden gebruikt om alle activiteiten te volgen en enige vreemde gedragingen te blokkeren.

API-sleutelauthenticatie is ontworpen om de beperkingen van gedeelde logingegevens op te lossen, wat een grote kwestie is met HTTP-basisauthenticatie. Het kan voor twee doelen worden gebruikt. Het eerste stel is de client-app identificeren, die een aanroep naar uw backend-API doet. Het tweede stel is de client-app autorisatie, die bepaalt of de aanroepende applicatie toegang tot de API heeft gekregen.

API-sleutels worden gehaald uit API-sleutelproviders die beheerd worden op een webapplicatie.

Waar u uw API-sleutels moet opslaan

Verbrand uw sleutels niet in uw code of in bestanden, want ze kunnen publiekrechtelijk op GitHub uitkomen, maar sla uw API-sleutels in een omgevingsvariabele op.

Een voorbeeld van een API-sleutel zou er ongeveer zo uitzien.

key: a9nIbdnaoks97028Jlf.ains9NIKQMEO

Een toegangstoken is een veiligheidskenmerk dat wordt gebruikt om toegang tot een API (Application Programming Interface) te authenticateren en autoriseren. Tokens zijn eenvoudig unieke kredieten voor de drager van het token die toegang tot een API heeft.

Hier is een voorbeeld van een JSON Web Token (JWT):

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Dit is een JWT uitgevoerd in drie delen, gescheiden door puntjes: de kop, het payload en de handtekening. Het kopgedeelte bevat meestal informatie over het algoritme dat wordt gebruikt voor het ondertekenen van het token, bijvoorbeeld:

{

"alg": "HS256",

"typ": "JWT"

}

Het payload bevat de claims of verklaringen over de entiteit (gebruiker, cliënt, enz.) en kan informatie bevatten zoals de onderwerp, uitgever, verloopdatum en aangepaste data. Bijvoorbeeld:

{

"sub": "1234567890",

"name": "John Doe",

"iat": 1516239022

}

De handtekening wordt gemaakt door het geencodeerde kopgedeelte, payload en een geheime sleutel te nemen en een cryptografisch algoritme, zoals HMAC-SHA256, toe te passen. De handtekening zorgt ervoor dat de integriteit en authenticiteit van het token worden gewaarborgd.

Bij het gebruik van dit JWT, wordt de client dit inclusief in de autorisatietypetoets van API-verzoeken, zoals dit:

Authenticatie: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

De API-server kan dan de authenticiteit van het token controleren, de vervaldatum controleren en de informatie die in de payload zit gebruiken voor autorisatie en andere doeleinden.

Merk op dat het hierbij gegeven voorbeeldtoken alleen maar voor illustratieve doeleinden is en niet in een productieomgeving moet worden gebruikt.

Tokens en sleutels zijn beide voor authenticatie en autorisatie gebruikt, echter, ze verschillen op de volgende manieren:

API-sleutels worden meestal gebruikt voor identificatie en authenticatie van een client of applicatie bij het bezoeken van een API. Ze zijn vaak lang, random gegenereerde strings die dienen als referenties. Tokens zijn erop gericht aan geautoriseerde clients of gebruikers en worden gegeven nadat een succesvolle authenticatiesprocedure is afgerond en dienen als bewijs van authenticatie.

Levensduur: Tenzij de API-provider het opzettelijk intrekkt of verversd, hebben API-sleutels meestal een lange levensduur. Tokens hebben echter vaak een korte levensduur en een vervaldatum. Afhankelijk van de authenticatietechniek moet de client zich opnieuw authenticeren of een vernieuwingssleutel gebruiken om een nieuw token te krijgen zodra het oude is verlopen.

Beveiliging: tokens bieden doorgaans betere beveiligingsfuncties aan dan API-sleutels. Tokens kunnen ontworpen worden om beperkte scopes of toestemmingen te hebben, wat een fijngerechte toegangs controle mogelijk maakt. Ze kunnen ook versleuteld, ondertekend of aanvullende claims bevatten die integriteit en authenticiteit bieden. Dit maakt een veiligere authenticatie en betere bescherming van gevoelige data mogelijk.

A. Weers API

Weers APIs, of Application Programming Interfaces, zijn diensten die realtime toegang bieden tot weergegevens en voorspellingen.

Voorbeelden hiervan zijn

. WeatherAPI.com, Forecast, Meteostat.

B. Sociale Media API

Sociale netwerk APIs staan deze platformen toe om te integreren met andere software leveranciers en apps.

Voorbeelden hiervan zijn…

C. Betaalweg API

De technische interface dat softwareontwikkelaars toestaat om betaalwegdiensten in hun apps of websites te integreren, wordt de betaalweg API genoemd.

Voorbeelden hiervan zijn

Stripe API. Stripe is een hoog gehalte dienst die leveranciers toestaat online betalingen te accepteren, Noodlio Pay, Square API, PayPal, Adyen, Paybook, KeyPay, BIPS Factuur (door Coinify).

D. Kaartlegging en Geolocaties API

De Geolocaties API bewaart geen informatie, maar stelt u in staat bestaande gegevens te verzamelen van het doorvraagde apparaat. Het kan positiegegevens verzamelen van verschillende bronnen, inclusief IP-adres, GPS, WiFi, Bluetooth, RFID, GSM/CDMA-ID en menselijke invoer.

Voorbeelden zijn Geolocation API, Mapbox API, OpenStreetMap API, MapQuest API, HERE API.

IV. Conclusie en Take Home

Tijdens dit artikel is gelegen wat APIs zijn, hoe het werkt, echte-leven voorbeelden, APISecurity, HTTP methodes en de importancie van APIs. Is eruitgeleid dat een API Software Engineers toestaat om toepassingen te integreren in wat wordt gebouwd en zelfs te verbeteren. Tijdens mijn onderzoek en schrijven, ontdekte ik dat API-veiligheid een grote kwestie is. Als er een API wordt gehackt, zal dit alle toepassingen die eraan zijn gekoppeld beïnvloeden, dus zal ik mijn onderzoek verdiepen op API-veiligheid.

Tot slot zal ik een ander artikel uitgeven in relatie tot dit, want het zal gaan over het exploren van APIs, het werken met APIs in codes, API best practices, API ontwerp en ontwikkeling.

A. Enkele sleutelwoorden zijn

API – Application User Interface

RPC – Remote Procedural Call

HTTP – Hypertext Transfer Protocol

B. Volgende stappen voor verdere leren

Uiteindelijk zal ik een ander artikel over dit onderwerp uitgeven, want het zal gaan over het verkennen van APIs, het werken met APIs in code, best practices voor APIs, API ontwerp en ontwikkeling.

Source:
https://nechey.hashnode.dev/introduction-to-apis-a-beginners-guide-to-understanding-and-utilising-apis-in-software-engineering