Introduction aux API : un guide pour débutants sur la compréhension et l’utilisation des API en ingénierie logicielle

Avez-vous jamais demandé comment vous pouvez vous connecter à vos applications favorites telles que Facebook, Hashnode, dev.to, LinkedIn et ainsi de suite ? Je sais que vous avez déjà pris la défense et que vous pensez rapidement. Ou avez-vous imaginé combien c’était simple de rejoindre l’application de vol WakaNow et de trouver les tarifs les moins chers et les plus abordables du monde entier ? Les amateurs de football ne sont pas non plus laissés de côté, car ils peuvent accéder aux scores en temps réel.

La réponse à tout cela est qu’ils communiquent avec d’autres systèmes pour obtenir ces données ou pour vérifier les détails, et la méthode de communication est par l’intermédiaire d’une API.

Dans cet article, le concept d’API sera démystifié et une compréhension claire et adéquate de ce que sont les APIs, leurs types et leur mode d’opération sera acquise.

Une API, pour Application Programme Interface, est simplement une arme qui permet aux systèmes ou technologies de communiquer entre eux en échangeant de l’information ou des données. Elle peut être expliquée d’autre part comme une couche qui permet aux systèmes de communiquer les uns avec les autres selon un protocole ou un standard qui régule cet échange.

Les API sont importantes car elles permettent aux systèmes et aux technologies d’interagir ensemble, de partager des données et des fonctionnalités, et de travailler ensemble pour créer des systèmes puissants et efficaces. De plus, les API donnent aux développeurs la super capacité de regrouper des applications pour effectuer une tâche spécifique. Par exemple, un blog mode peut intégrer l’API Flutterwave pour permettre aux clients de payer pour des designs ou des séminaires, vous pouvez également utiliser votre compte Google pour vous connecter à toute application liée à celui-ci.

Les API peuvent être utilisées pour obtenir des données de tiers et échanger des informations, ce qui nous permet de faire des choses folles en tant que ingénieurs en logiciel.

Prenons cet exemple pour commencer, vous voulez faire des études à l’Université. Vous devez suivre une série de processus qui impliquerait de passer des examens et, en fonction des résultats, de postuler à l’institution de votre choix. Vous n’avez pas besoin de vous rendre directement chez l’Officier d’Admission pour une demande, vous devez simplement visiter leur portail, saisir vos détails et télécharger vos documents de preuve. En attendant l’admission, une série d’événements se produit à l’arrière-plan que vous ne connaissez pas, mais vous recevrez une admission si les exigences sont remplies.

Le processus entier est le suivant : nous voulons communiquer avec le Bureau d’Admission de l’École et comme nous ne pouvons pas accéder au Bureau d’Admission directement, nous utilisons une couche d’API, qui dans ce scénario est le portail de l’École que vous appelez un Point de terminaison. Chaque Point de terminaison a son propre protocole qui est requis et le résultat attendu. Dans cet exemple, le portail de l’école protège les processus complexes de l’Office d’Admission.

Imaginez qu’il n’y ait pas de portail d’admission, vous devriez aller à la direction des admissions de l’université pour soumettre vos détails, ce qui serait chronophage et sujet à des erreurs.

Pour connecter deux applications logiciels via Internet, un programme, connu sous le nom de client, envoie une demande à l’API de l’autre application. Le client demande une ressource à la base de données de l’application ou demande qu’une action soit effectuée sur le serveur.

Après avoir reçu et validé la demande du client, l’API prend l’action souhaitée et retourne une réponse au client. Cette réponse comprend le statut de la demande (terminée ou rejetée) ainsi que toutes les ressources demandées par le client.

Fig 1. La fonctionnement d’une API

Il y a environ quatre types différents d’APIs, qui seront expliqués.

Quelques exemples d’APIs publiques incluent ; Bitquery, Adoptapet, covalenthq.

Une API privée ou une API interne est un type d’API qui n’est accessible qu’aux développeurs ou individus qui l’ont construite. Elle ne peut être accessible que lorsqu’une invitation est envoyée par le ou les propriétaires aux tiers.

Certains exemples d’APIs privées incluent ;

  1. Twilio’s Programmable Voice API

  2. Stripe’s Connect API

  3. Google Maps’ private APIs for enterprise

  4. Salesforce’s Metadata API

  5. API Enterprise de GitHub

Une interface de programmation d’applications (API) fournie par une entreprise ou une organisation pour permettre aux développeurs externes ou partenaires de communiquer et d’interagir avec leurs services, données ou plateforme est connue sous le nom d’API partenaire, également connue sous le nom d’API tiers ou API de développeur. Ces API sont conçues pour faciliter l’intégration de divers systèmes, programmes ou services.

Les organisations qui souhaitent étendre l’utilité de leurs produits ou services et promouvoir la coopération avec les développeurs externes ou les entreprises fournissent souvent des API partenaires. Avec l’aide de ces API, les partenaires peuvent créer des programmes, instruments ou services qui utilisent les données, fonctions ou technologie de l’entreprise.

Certains exemples d’API partenaires incluent :

  1. Twitter API pour les partenaires

  2. Spotify API pour les développeurs

  3. API Dropbox pour partenaires

  4. Programme de développeurs eBay API

  5. API de publicité des produits Amazon

Les API Composites, également appelées API d’agrégation ou API de mashup, sont des types d’API qui fusionnent et agrègent des informations ou des fonctionnalités provenant de plusieurs API ou services sous-jacents dans une interface unique. Ces API simplifient le processus d’intégration et offrent une vue consolidée de plusieurs sources de données en permettant aux développeurs d’accéder et deinteragir avec différents services à travers une seule API.

Lorsque les programmeurs ont besoin de recevoir constamment des informations ou d’effectuer plusieurs actions à partir de nombreuses sources, les API composites sont utiles. Une API composite permet aux développeurs de faire une seule requête pour accéder à des données ou effectuer des actions sur plusieurs services plutôt que d’envoyer des requêtes séparées à chaque API. Le processus d’intégration est optimisé, la complexité est réduite et l’efficacité est augmentée en conséquence.

Voici un exemple d’API composite qui aggrege les données météorologiques de plusieurs fournisseurs de services météorologiques :

  1. WeatherAPI

  2. OpenWeatherMap API

  3. Weatherbit API

Pour aggreger les données météorologiques de ces nombreux fournisseurs et offrir aux développeurs un seul interface de données météorologiques, une API composite peut être créée. Cela permet aux développeurs d’obtenir des informations météorologiques de plusieurs sources en faisant une seule requête API.

Les Web APIs sont les plus communément utilisées car la plupart de nos activités quotidiennes tournent autour du web. Les Web APIs sont des normes qui permettent de conserver une uniformité sur différents navigateurs. Elles s’appliquent à deux aspects de la communication. Les Web APIs, communément appelées interfaces de programmation (API), sont des interfaces fournies par les services Web ou les applications qui permettent la communication et l’interaction en ligne entre eux et d’autres programmes logiciels. Les développeurs peuvent accéder de manière programmatique à certaines fonctionnalités, services ou données depuis une application Web ou un service grâce aux Web APIs.

1. les API RESTful

Les API RESTful, pour REpresentational State Transfer Application Programming Interface, sont une série de normes qui permettent aux ordinateurs de communiquer entre eux sur le web en suivant les principes de conception de l’architecture REST (ou REpresentational State Transfer).

Une partie des API REST incluent

  1. Requête —–→ Réponse

  2. Opération – GET, POST, PATCH, UPDATE, DELETE

  3. Point de terminaison – URL

  4. Paramètre/Corps

  5. En-têtes

Fig 2 Diagramme d’une API REST

Les principes clés de REST incluent :

  1. Architecture Client-Serveur : REST sépare les composants client et serveur, leur permettant d’évoluer indépendamment. Le client envoie des demandes au serveur, et le serveur traite ces demandes avant de retourner des réponses.

  2. Statelessness : REST est stateless, ce qui signifie que chaque demande du client au serveur doit contenir toute l’information nécessaire pour être comprise et traitées. Le serveur ne stocke aucun contexte client entre les demandes, ce qui simplifie la scalabilité et permet un meilleur cache.

  3. Interface Uniforme : REST promeut un ensemble uniforme d’interfaces et d’opérations, généralement utilisant des méthodes HTTP standards comme GET, POST, PUT et DELETE. Chaque ressource dans un système RESTful est uniquement identifiée par une URL (Uniform Resource Locator).

  4. Base sur les ressources : REST traite tout comme une ressource, telles que des entités de données, des services ou des collections. Chaque ressource a un identificateur unique et peut être accédée et manipulée à l’aide de méthodes HTTP standard.

  5. Représentation des ressources : Les ressources dans REST sont représentées à l’aide d’un format spécifique, tel que JSON (JavaScript Object Notation) ou XML (eXtensible Markup Language). Le serveur envoie des représentations de ressources au client, qui peuvent inclure des données, des métadonnées ou des liens hypermédia.

  6. Interactions sans état : Chaque requête envoyée du client vers le serveur est autonome et ne repose pas sur une requête précédente ou un état sur le serveur. Cela permet une meilleure scalabilité, car le serveur n’a pas besoin de maintenir des informations de session client.

Avantages d’une API REST

  1. Simple et standardisé

  2. Échelonnable et sans état

  3. Haute performance et cachable

2. API SOAP

SOAP qui signifie Simple Object Access Protocol est le service web qui se conforme à la spécification des services web SOAP. Il s’agit d’un protocole de messagerie populaire qui utilise XML comme format, schéma bien défini et protocole standard pour l’utilisateur. Il est défini par le World Wide Web Consortium. Les protocoles SOAP couvrent un grand nombre de protocoles de communication Internet, notamment HTTP, SMTP et TCP/IP.

Fig 3 Un diagramme API SOAP

Avantages de l’utilisation de l’API SOAP

  1. La langue, la plateforme et le transport sont indépendants.

  2. Fonctionne bien dans les environnements d’entreprise distribués.

  3. Fournit une extensibilité pré-construction significative sous la forme des normes WS*.

  4. Gestion des erreurs intégrée.

  1. RPC.

Le protocole de demande de procédure distante (RPC) est un moyen de transmettre plusieurs paramètres et de recevoir des résultats. C’est une appel de fonction à distance, il n’existe pas sur votre machine locale mais doit être déployé depuis l’endroit où il est appelé. Il est asynchrone car vous devez obtenir une réponse pour qu’il soit marqué comme un succès. C’est une interaction directe entre le client et le serveur. Les API RPC entraînent des opérations ou des procédures opérationnelles. RPC peut utiliser deux langages différents, JSON et XML.

Fig 4 Protocole RPC

  1. GraphQL APIs

GraphQL est une langue de requête pour les API qui permet aux clients de demander des données spécifiques et de former la réponse en fonction de leurs besoins.

Quelques exemples de GraphQL APIs

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

Comparaison des protocoles API

REST

SOAP

RPC

GraphQL

Fonctionne avec XML, JSON, HTTP et texte brut

Fonctionne avec XML par design

Exige que les utilisateurs connaissent les noms des procédures

Fonctionne avec HTTP

Fonctionne bien avec les données

Fonctionne bien avec les processus (actions)

Paramètres et ordres spécifiques

Sécurité modérée

Sécurité avancée

La documentation peut être complétée par le biais de supports hypermédia

Le plus difficile pour les développeurs à utiliser

Exige une documentation extensive

Les méthodes de requête sont GET, PUT, DELETE, PATCH, UPDATE.

La méthode de requête est POST

La méthode de requête est POST

La méthode de requête est POST

A. Endpoints

Un endpoint d’API est un point ou un extrémité d’un canal de communication. Lorsque deux systèmes interagissent via une API, les points d’interaction de cette communication sont appelés endpoints. En termes littéraux, l’endroit où les API envoient les ressources et où les ressources partent est appelé un endpoint. Dans les API, un endpoint est généralement une locator de ressource uniforme (URL) qui fournit l’emplacement de la ressource sur le serveur.

Un exemple d’endpoint est

Exemple d’endpoint de l’API Twitter

L’API de Twitter expose des données sur les tweets, les messages directs, les utilisateurs et plus encore.

Disons que vous souhaitez récupérer le contenu d’un tweet spécifique. Pour cela, vous pouvez utiliser l’extrémité de recherche de tweet, qui a l’URL api.twitter.com/2/tweets{id} (où {id} est l’identifiant unique du tweet).

B. Requêtes et réponses

Une requête API est un message envoyé du Client au serveur. Une requête API est une demande faite à une API pour accéder ou modifier des données ou effectuer une action spécifique. Une réponse API est les données ou informations qui sont retournées en réponse à une demande API.

Par exemple, un utilisateur clique sur le lien hypertexte ci-dessous;

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

Afficher toutes les saveurs disponibles dans la catégorie saveurs

</a>

La requête HTTP sera envoyée comme suit;

GET /categories/01/flavours HTTP/1.1

Hôte : localhost:2400

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

Requête API

1. Copier le codeGET https://api.com/categories/flavours

Réponse API

1. Copier le codeHTTP/1.1 200 OK

2. Content-Type: application/json

3.

4. {

5. "id": 01,

6. "flavours": "Chocolate"

7. }

À partir de cette requête, nous voyons que l’Endpoint est l’URL – /categories/01/flavours.

La méthode de requête est GET, la spécification HTTP est 1.1, le domaine est localhost, le port est 2400, Flavours est la ressource, et l’user-agent fournit le navigateur et le système d’exploitation.

C. Méthodes HTTP (GET, POST, PUT, DELETE)

Les API qui utilisent le protocole HTTP utilisent des méthodes de requête HTTP (aussi connues sous le nom de « verbes HTTP ») pour transmettre les requêtes clients aux serveurs. Les méthodes de requête HTTP les plus couramment utilisées sont GET, POST, PUT et DELETE.

  1. GET est utilisé par un client pour récupérer des données d’un serveur,

  2. PUT remplace les données existantes ou crée des données si elles n’existent pas,

  3. POST est principalement utilisé pour créer de nouvelles ressources,

  4. PATCH est utilisé pour mettre à jour partiellement les données à partir d’une ressource, et

  5. DELETE supprime les données ou ressources spécifiées par le client sur un serveur.

D. API Security – Authentication and Authorization

Ces deux termes peuvent sembler semblables mais font deux fonctions différentes. L’authentification se rapporte à la vérification des utilisateurs ou de l’identité, tandis que l’autorisation se rapporte à l’accès qu’un utilisateur a ou à la permission accordée pour une action. Ils sont essentiels à la sécurité des API, une méthode populaire pour l’authentification et l’autorisation des utilisateurs est OAuth 2.0.

Different types of authorization

Il existe plusieurs méthodes pour l’autorisation. Voici les différents types d’autorisation API que vous pourriez rencontrer :

E. Clés et jetons API

Les clés API sont des chaînes de texte qui fournissent l’identification et l’autorisation de l’application cliente. En d’autres termes, elles identifient les applications qui appellent le serveur et déterminent si les applications appelantes ont le droit d’accès au serveur API. Elles sont utilisées pour suivre toutes les activités et bloquer tout comportement malveillant.

L’authentification par clé API a été créée pour remédier aux insuffisances de l’authentification par mot de passe partagé, qui est un problème majeur de l’authentification HTTP basique. Elle peut être utilisée pour deux purposes. La première étape est l’identification de l’application cliente qui appelle votre API backend. La deuxième étape est l’autorisation de l’application cliente, qui détermine si l’application appelante a été autorisée à appeler l’API.

Les clés API sont obtenues auprès de fournisseurs de clés API gérés par une application Web.

Où stocker vos clés API

Ne pas intégrer vos clés dans votre code ou dans des fichiers parce qu’elles pourraient être découvertes publiquement lorsque vous pushiez sur GitHub, plutôt stocker vos clés API dans des variables d’environnement.

Un exemple de clé API pourrait ressembler à ce qui suit.

clé : a9nIbdnaoks97028Jlf.ains9NIKQMEO

Un jeton d’accès est une pièce jointe de sécurité utilisée pour authentifier et autoriser l’accès à une API (Application Programming Interface). Les jetons sont simplement des éléments uniques pour le porteur du jeton qui est autorisé à accéder à une API.

Voici un exemple d’un jeton Jeton Web JSON (JWT) :

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Ceci est un JWT composé de trois parties séparées par des points : l’en-tête, le payload et la signature. L’en-tête contient généralement des informations sur l’algorithme d’signature utilisé pour le jeton, par exemple :

{

"alg": "HS256",

"typ": "JWT"

}

Le payload contient les revendications ou déclarations sur l’entité (utilisateur, client, etc.) et peut inclure des informations telles que le sujet, l’émetteur, l’heure d’expiration et des données personnalisées. Par exemple :

{

"sub": "1234567890",

"name": "John Doe",

"iat": 1516239022

}

La signature est créée en prenant l’en-tête encodé, le payload et une clé secrète, et en appliquant un algorithme cryptographique, tel que HMAC-SHA256. La signature garantit l’intégrité et l’authenticité du jeton.

Lors de l’utilisation de ce JWT, le client le inclut dans l’en-tête d’autorisation des requêtes API comme suit :

Autorisation : Jeton eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

L’ordinateur serveur API peut ensuite vérifier l’authenticité du jeton, vérifier son expiration et utiliser les informations contenues dans le payload pour l’autorisation et d’autres besoins.

Notez que le exemple de token fourni ici est uniquement pour des raisons illustratives et ne devrait pas être utilisé dans un environnement de production.

Les tokens et les clés sont toutes deux utilisées pour l’authentification et l’autorisation, mais elles diffèrent comme suit :

Les clés API sont généralement utilisées pour l’identification et l’authentification du client ou de l’application lors de la visite de une API. Elles sont souvent sous forme de chaînes aléatoires longues servant de credentials. Les tokens, d’autre part, sont octroyés aux clients autorisés ou utilisateurs suite à une procédure d’authentification réussie et servent de preuve d’authentification.

Durée de vie :除非故意撤销或旋转由API提供商, les clés API généralement ont une longue durée de vie. D’autre part, les tokens ont souvent une courte durée de vie et une date d’expiration.selon l’authentification technique, le client doit soit reauthentifier ou utiliser un jeton de rafraîchissement pour obtenir un nouveau jeton une fois l’ancien expiré.

Sécurité : Les tokens offrent généralement de meilleures fonctionnalités de sécurité par rapport aux clés API. Les tokens peuvent être conçus pour avoir des portées ou des permissions limitées, permettant un contrôle d’accès à la fine maille. Ils peuvent également être chiffrés, signés ou contenir des allégations supplémentaires offrant l’intégrité et l’authenticité. Cela permet une authentification plus sécurisée et une meilleure protection des données sensibles.

A. API météorologique

Les API météorologiques, ou Application Programming Interfaces, sont des services qui offrent un accès en temps réel aux données météorologiques et aux prévisions.

Exemples incluent

. WeatherAPI.com, Forecast, Meteostat.

B. API des réseaux sociaux

Les API des réseaux sociaux permettent à ces plateformes de s’intégrer à d’autres fournisseurs de logiciels et d’applications.

Exemples incluent

C. Interface de passerelle de paiement

L’interface technique qui permet aux développeurs de logiciels d’intégrer des services de passerelle de paiement dans leurs applications ou sites Web est appelée une API de passerelle de paiement.

Exemples :

API de Stripe. Stripe est un service très reconnu qui permet aux fournisseurs de recevoir des paiements en ligne, Noodlio Pay, API de Square, PayPal, Adyen, Paybook, KeyPay, BIPS Facture (par Coinify).

D. API de cartographie et de géolocalisation

L’API de géolocalisation ne conserve aucune information, mais permet plutôt de rassembler des données existantes depuis le dispositif en cours d’interrogation. Elle peut rassembler des données de position depuis différentes sources, y compris une adresse IP, le GPS, le Wi-Fi, le Bluetooth, le RFID, l’ID GSM/CDMA et l’entrée humaine.

Les exemples incluent Geolocation API, Mapbox API, OpenStreetMap API, MapQuest API, HERE API.

IV. Conclusion et conclusion

Tout au long de cet article, il a été établi ce que sont les API, comment elles fonctionnent, des exemples concrets, l’APISécurité, les méthodes HTTP et l’importance des API. On en a déduit que les API permettent aux ingénieurs en logiciel d’intégrer des applications dans ce qui est en train d’être construit et même de l’améliorer. Au cours de mes recherches et de mes écrits, j’ai découvert que la sécurité des API constituait un problème majeur. Si une API est piratée, cela affectera toutes les applications qui s’y connectent, et je poursuivrai donc mes recherches sur la sécurité des API.

Enfin, je publierai un autre article sur ce sujet, qui portera sur l’exploration des API, le travail avec les API dans les codes, les meilleures pratiques en matière d’API, la conception et le développement d’API.

A. Quelques mots-clés

API – Application User Interface

RPC – Remote Procedural Call

HTTP – Hypertext Transfer Protocol

B. Prochaines étapes de l’apprentissage

Enfin, je vais publier un autre article sur ce sujet, car il sera consacré à l’exploration d’API, à la collaboration avec des API dans les codes, aux meilleures pratiques des API, à la conception et au développement d’API.

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