Agence web » Actualités du digital » Qu'est-ce qu'une «API» et comment en utilisez-vous une?

Qu'est-ce qu'une «API» et comment en utilisez-vous une?

Andrey Suslov / Shutterstock

Une «API» est le middleware qui se situe entre deux applications et leur permet de communiquer en utilisant des règles prédéfinies. En pratique, les API sont généralement utilisées pour permettre aux applications côté client d'accéder à une base de données autrement protégée.

Que font les API?

À un niveau élevé, les API établissent simplement la communication entre deux applications. Ils ne peuvent pas communiquer directement, car ils n'ont pas accès au code de l'autre, ils doivent donc passer un câble entre eux et envoyer des signaux sur toute la ligne. L'API définit comment ces signaux doivent être envoyés. Presque toutes les applications exécutées sur votre ordinateur utilisent une API quelconque pour parler à des milliers d'autres choses.

En pratique, le terme «API» est couramment utilisé pour faire référence aux API Web qui forment le lien entre le serveur et le client, ou entre le serveur et un service backend. Ces API agissent comme le point d'accès pour tout service derrière elles.

Par exemple, imaginez que vous avez une application côté client qui doit parler à un serveur avec une base de données. Vous ne pouvez évidemment pas donner au client un accès complet à la base de données, car cela présente un certain nombre de problèmes. Tout d'abord, c'est probablement la pire erreur de sécurité que vous pourriez faire, mais en plus de cela, elle casse également tout le modèle client-serveur. Le client ne devrait pas avoir à se soucier de parler à une base de données ou de stocker des données; il doit communiquer avec le serveur et laisser le serveur faire le gros du travail.

Au lieu de permettre au client un accès complet, vous pouvez créer un autre service qui communiquera avec la base de données au nom du client. Il s'agit de l'application API, et elle se trouve directement devant la base de données (ou tout autre service derrière elle).

Le client envoie des demandes à l'application API, généralement via HTTP à l'aide de GET et POST demandes. Il peut s'agir d'une URL sur votre serveur, telle que "api.yoursite.com. " Si le client voulait rechercher la base de données avec une requête spécifique, l'API demanderait à la base de données d'effectuer la recherche, puis retournerait les résultats. Habituellement, les API communiquent via JSON, qui renvoie les résultats sous forme d'objet avec des types strictement définis, par exemple:

{
  "name": "MyAPI",
  "search_results": (...)
}

C'est un autre avantage des API: la standardisation de la structure des données. Votre API doit toujours renvoyer le même format et le même type de données à chaque fois, ce qui facilite son utilisation dans différentes applications. La plupart des grandes entreprises technologiques ont des API accessibles au public et une documentation complète sur la structure de l'API et la façon dont elle est utilisée.

Comment utiliser une API?

Les API sont assez standardisées. Ils seront presque toujours accessibles via HTTP et renvoient généralement des données JSON, ce qui signifie que tout langage de programmation qui peut effectuer des requêtes HTTP et décoder JSON peut parler à une API et en obtenir des données. Même quelque chose d'aussi simple que curl ou wget qui peut télécharger du contenu Web peut accéder à une API.

Vous pouvez utiliser des API accessibles au public dans n'importe quelle application de votre choix, bien que leur taux soit parfois limité pour éviter les abus. Par exemple, KeyCDN exécute une API pour obtenir des informations de localisation à partir d'une adresse d'API, mais vous êtes limité à trois demandes par seconde. Vous pouvez l'utiliser dans n'importe quelle application en créant un HTTP GET demande au point de terminaison API avec l'adresse IP transmise en tant que paramètre d'URL. Par exemple:

https://tools.keycdn.com/geo.json?host={IP_ADDRESS}

Renverrait quelque chose comme:

{
  "status": "success",
  "description": "Data successfully received.",
  "data": {
    "geo": {
      "host": "173.79.254.254",
      "ip": "173.79.254.254",
      "rdns": "pool-173-79-254-254.washdc.fios.verizon.net",
      "asn": 701,
      "isp": "MCI Communications Services, Inc. d/b/a Verizon Business",
      "country_name": "United States",
      "country_code": "US",
      "region_name": "Virginia",
      "region_code": "VA",
      "city": "Alexandria",
      "postal_code": "22309",
      "continent_name": "North America",
      "continent_code": "NA",
      "latitude": 38.719,
      "longitude": -77.1067,
      "metro_code": 511,
      "timezone": "America/New_York",
      "datetime": "2019-08-22 17:30:48"
    }
  }
}

Vous pouvez stocker ce résultat dans une variable nommée response. Ensuite, si vous vouliez connaître le code postal de l'adresse, vous pouvez y accéder en utilisant response.data.geo.postal_code.

Il existe des bibliothèques pour la plupart des langues qui facilitent ce processus, et de nombreuses langues ont également des outils intégrés. Nous en afficherons quelques-unes, mais une recherche rapide de «___ Requête HTTP» devrait afficher les résultats pour la langue avec laquelle vous travaillez.

Javascript

JavaScript peut faire des requêtes HTTP hors de la boîte en utilisant le XMLHttpRequest() objet:

const Http = new XMLHttpRequest();
const url='https://api.github.com/';
Http.open("GET", url);
Http.send();

Http.onreadystatechange = (e) => {
  console.log(Http.responseText)
}

Cependant, cette syntaxe est assez maladroite, donc elle est généralement gérée à l'aide d'autres bibliothèques à moins que vous n'ayez strictement besoin de vanilla JS. Par exemple, jQuery a le ajax méthode qui s'occupe de cela:

$.ajax('https://api.github.com/', {
    dataType: 'json',
    success: function (data, status, xhr) { ... }
});

Et il y a le axios bibliothèque, qui le gère à l'aide de promesses:

axios.get('https://api.github.com/')
  .then((data) => {
    console.log(data);
  }
)

Dans tous les cas, les objets JSON peuvent désérialiser directement en objets JavaScript en utilisant JSON.parse(), qui vous permettra de stocker les résultats pour une utilisation ailleurs.

PHP

PHP peut effectuer des requêtes GET nativement en utilisant le file_get_contents fonction, qui peut être utilisée avec json_decode pour lire le résultat de l'API dans une variable:

$json = file_get_contents('https://api.github.com/');
$obj = json_decode($json);

Si vous voulez faire un POST demande, ou besoin d'une configuration supplémentaire, vous pouvez créer un contexte spécial pour file_get_contents en utilisant stream_context_create:

$url ='https://api.github.com/';
$data = 'something';

$options = array(
  'http' => array(
    'header' => "Content-type: application/x-www-form-urlencodedrn",
    'method' => 'POST',
    'content' => http_build_query($data)
  )
);

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { //error }

Python

Python n'a pas un excellent moyen de le faire en mode natif, vous devrez donc installer la bibliothèque de requêtes à partir de pip. Après cela, vous pouvez faire des demandes comme ceci:

import requests
r = requests.get("https://api.github.com/")

Cela renvoie un objet représentant l'intégralité de la transaction HTTP, donc pour obtenir le contenu réel que vous devrez utiliser r.content. Vous aurez probablement aussi besoin de la bibliothèque JSON pour décoder la réponse en un objet lisible en Python.

import json
import requests
r = requests.get("https://api.github.com/")
decoded = json.loads(r.content)

Comment créer ma propre API Web?

Si vous avez des données que vous souhaitez mettre à disposition, vous pouvez placer une API devant pour y accéder via Internet.

Pour ce faire, vous devez créer un serveur API. La seule exigence est qu'il puisse écouter via HTTP et répondre aux demandes, vous pouvez donc utiliser n'importe quel langage de programmation que vous aimez. Vous aurez probablement aussi besoin d'une bibliothèque pour vous connecter à la base de données de votre choix dans cette langue, et vous souhaiterez peut-être également implémenter une sorte d'authentification comme OAuth 2.0 afin de pouvoir suivre les utilisateurs et leurs autorisations.

Express est une bibliothèque Node.JS couramment utilisée pour créer de simples API Web à l'aide de JavaScript. Le serveur Express écoute via HTTP et est capable de transmettre différents itinéraires aux fonctions de gestionnaire. Vous pouvez l'utiliser avec un client Node MySQL (ou toute autre base de données) pour créer des API riches en données. Pour Python, vous aurez également besoin d'un framework Web comme Flask qui peut écouter et répondre aux demandes.

★★★★★