API REST
Roy Fielding a défini REST en 2000 dans sa thèse Architectural Styles and the Design of Network-based Software Architectures à l’University of California, Irvine. Il a travaillé comme rédacteur sur les spécifications HTTP/1.1 et a développé REST en parallèle à cette norme. Le style d’architecture n’est pas un protocole, mais un ensemble de principes pour la communication entre systèmes sur un réseau.
2. Gebruik HTTP-methoden als bouwstenen
REST fait usage de méthodes HTTP existantes : `GET` récupère des données, `POST` crée une nouvelle ressource, `PUT` modifie une ressource existante, et `DELETE` supprime une ressource. Ces méthodes sont définies dans la RFC 7231, publiée par l'IETF en juin 2014. Les méthodes sont soit sûres (elles ne modifient rien, comme `GET`) soit idempotentes (une exécution répétée donne le même résultat, comme `PUT` et `DELETE`).
3. Hanteer stateless communicatie
Chaque requête d'un client vers un serveur contient toutes les informations nécessaires pour traiter cette requête. Le serveur ne mémorise aucun état entre les requêtes. Cela simplifie le côté serveur puisqu'il n'y a pas de statut de session à conserver, et rend la mise à l'échelle horizontale aisée : chaque requête peut être envoyée vers n'importe quel serveur disponible sans avoir à transférer de contexte.
4. Identificeer bronnen met URI's
Chaque ressource — un utilisateur, un produit ou une commande — possède une URI unique. Le client communique avec cette ressource via les méthodes HTTP. Une requête `GET` récupère des données, un `POST` crée une nouvelle ressource. Cette approche cohérente rend REST simple à implémenter et contribue à l'uniformité des API web.
5. Travaillez avec JSON et traitez-le avec jq
Les API RESTful utilisent généralement JSON comme format de données. JSON est léger et fonctionne bien avec JavaScript. Utilisez `jq` pour filtrer et agréger les réponses JSON. Par exemple, pour calculer la somme des prix d'une liste de produits :
curl -s https://api.example.com/products | jq 'map(.price) | add'
Dit commando haalt de productlijst op, pakt alle prijzen en telt ze op.
6. Bouw een REST API met Node.js
Node.js est un environnement d'exécution JavaScript côté serveur qui fonctionne de manière asynchrone et traite efficacement de nombreuses requêtes simultanées. Cela correspond bien à la nature sans état de REST. Une API simple écoute sur HTTP, expose des ressources via des URL et renvoie des réponses JSON. Utilisez Express 4.18 ou supérieur pour le routage :
npm init -y
npm install expressCréez un fichier `server.js` :
const express = require('express');
const app = express();
app.use(express.json());</p><p>const products = [{ id: 1, name: 'Laptop', price: 999 }];</p><p>app.get('/products', (req, res) => {
res.json(products);
});</p><p>app.post('/products', (req, res) => {
const product = { id: products.length + 1, ...req.body };
products.push(product);
res.status(201).json(product);
});</p><p>app.listen(3000, () => console.log('API listening on port 3000'));Démarrez le serveur avec `node server.js`.
7. Raadpleeg een bestaande REST API
L’API BelgicaPress donne accès à des journaux belges numérisés de 1800 à 1970. Via des requêtes HTTP, vous pouvez demander des articles par mot-clé, date, titre de journal ou région. L’API prend également en charge IIIF (International Image Interoperability Framework) pour les images en haute résolution. Cela montre que REST ne fournit pas seulement des données textuelles, mais aussi des fichiers médias comme des scans de journaux historiques.
Europeana Newspapers biedt ook een REST API aan voor cultureel erfgoed. Gebruikers krijgen via een gratis API-key toegang tot krantenartikelen uit verschillende landen, waaronder België. Authenticatie via een API-sleutel is een veelgebruikte methode bij REST API's om toegang te beheren zonder volledige gebruikersaccounts.