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.

🔗 Termes associés

Prérequis:

📚 Sources