# Le Modèle de Maturité de Richardson

<https://www.crummy.com/writing/speaking/2008-QCon/act3.html> (2008)

![Le Modèle de Maturité de Richardson ou Web Service Maturity Heuristic](/files/-LFHY0S7Schm5-P8_f6G)

**\*P.O.X.** : Plain Old XML

## Level 0 : The Swamp of POX

XML-RPC over HTTP.

![Plain Old XML](/files/-LFHYStIKWMcNN-JDcAh)

![Tag Soup](/files/-LFHZyx8BCP7NmkN-DvI)

![ReST vs SOAP](/files/-LFH_0qRtT67j0bzpzNZ)

![](/files/-LFH_6-suTMlxY7l0qzj)

## Level 1 : Resources

L’API respecte le modèle de données et chaque ressource peut être identifiée avec une URL.

```http
POST /blogs/11111/posts
POST /posts/22222/comments
GET /comments/33333
```

![Resources](/files/-LFHa4dOVaQh_RXtd-yM)

## Level 2 : HTTP Verbs

Utilisation des méthodes HTTP autres que GET et POST pour signifier l’action souhaitée : PATCH / PUT / DELETE.

… et surtout les “status codes” HTTP pour résumer le résultat de l’opération :

**200** : OK\
**201** : Created\
**204** : No Content (delete)\
**400** : Bad Request\
**401** : Unauthorized\
**403** : Forbidden\
**404** : Not Found\
**409** : Conflict\
…

Bien sûr, les erreurs 4xx peuvent contenir un "body" avec des informations additionnelles.

{% hint style="info" %}
Utilisez le bon vocabulaire et évitez les APIs schtroumpf !

```http
SCHTROUMPF /q?data=select:*:from:carts
```

{% endhint %}

![What The Smurf!?](/files/-LFHacbEddLsuWTzByMX)

## Level 3 : Hypermedia Controls

Hypermedia est l’une des principales règles de la thèse de Fielding.

L’idée est de retrouver dans les API ReST la même logique Hypermedia qu’en HTML par exemple. Aujourd’hui, cela se résume principalement par la présence de liens dans les ressources permettant de définir la relation avec d’autres ressources.

L’API ReST devient alors ***discoverable***.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guide-api-rest.marmicode.fr/api-rest/le-modele-de-maturite-de-richardson.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
