REST API
Les REST APIs exploitent les méthodes HTTP pour gérer des ressources identifiées par des URIs, permettant des services web évolutifs et flexibles.
Les REST APIs modélisent les applications comme une collection de ressources identifiées par des URIs uniques. Les clients interagissent avec ces ressources en utilisant un ensemble fixe d'opérations, couramment mappées aux méthodes HTTP (GET, POST, PUT, PATCH, DELETE). Les contraintes clés incluent : l'absence d'état (pas de contexte client côté serveur entre les requêtes), une interface uniforme (méthodes, URIs et types de médias standardisés), la séparation client-serveur, la cacheabilité et un système en couches. Les représentations (typiquement JSON ou XML) sont transférées sur HTTP, et la négociation de contenu, le versioning et HATEOAS (facultativement) guident les interactions client. REST est un style architectural, pas un protocole, et bien qu'il s'aligne bien avec le web, une conception RESTful pratique nécessite d'équilibrer les problèmes de sur-consommation (over-fetching), de sous-consommation (under-fetching) et de sécurité tels que l'authentification, l'autorisation et la sécurité du transport (TLS).
graph LR
Center["REST API"]:::main
Pre_http["http"]:::pre --> Center
click Pre_http "/terms/http"
Pre_api["api"]:::pre --> Center
click Pre_api "/terms/api"
Rel_apache_http_server["apache-http-server"]:::related -.-> Center
click Rel_apache_http_server "/terms/apache-http-server"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Explique-moi comme si j'avais 5 ans
Comme un distributeur automatique : chaque article a un code. La machine ne se souvient pas de vous après l'achat.
🤓 Expert Deep Dive
Les contraintes incluent l'interface uniforme et la séparation client-serveur. JSON est le format de représentation dominant.