(avant) SOAP et (avant avant) CORBA
GET: donne l'état d'une ressource (safe, idempotent)
POST: ajoute une ressource non nommée (non-safe, non-idempotent)
PUT: modifie une ressource nommée (non-safe, idempotent)
DELETE: supprime une resource (non-safe, idempotent)
PATCH: modifie partiellement une ressource (non-safe, idempotent)
/des/urls/lisibles
En général du JSON.
Avec des liens (hypermedia).
Un endpoint c'est une page web !!
GET /customers
POST /orders
{"id": 1234 , "customer": 8769, "weight": 100}
PUT /orders/1234
{"customer": 8769, "weight": 100}
DELETE /customers/345
{
"id": 1234 ,
"customers": [
{"id": 8769, "weight": 100},
{"id": 3877, "weight": 52},
... TROP LONG ...
{"id": 85, "weight": 56},
{"id": 64, "weight": 112}
]
}
devient ...
{
"id": 1234 ,
"customers": "/customers/1234"
}
On expose des services, pas des tables.
GET /accounts?id=eric => TRÈS FAIBLE
GET /accounts/eric => FAIBLE
GET /myaccount => FORT
Normalement, rien ne change.
Mais...
Évitons le ORM-over-IP
Les objets métiers du fullback deviennent des ressources REST.
Donc pas de:
POST /store
{"type": "order", id": 56, "customer": 98}
En général, les URLs contiennent des noms, pas des verbes.
En fullback, pas de contrainte (fondamentale) pour gérer la sécurité sur la couche qu'on souhaite.
Là où un seul pouvait tout faire, on va avoir 2 personnes.
L'API REST devient leur contrat mutuel :
Rien ne change, on garde les bonnes pratiques d'hier.
Mais maintenant elles ne sont plus optionnelles.
Donc tout change.
Table of contents | t |
---|---|
Exposé | ESC |
Autoscale | e |
Full screen slides | f |
Presenter view | p |
Source files | s |
Slide numbers | n |
Blank screen | b |
Notes | 2 |
Help | h |