00:00:00

API REST - Évitez les pièges

Notes

C'était pas mieux avant...

(avant) SOAP et (avant avant) CORBA

Notes

API REST: une idée simple !

  • juste HTTP,
  • ses verbes,
  • des URLs signifiantes,
  • et un contenu hypermedia.

Notes

Les verbes

GET: donne l'état d'une ressource (safe, idempotent)

POST: ajoute une ressource non nommée (non-safe, non-idempotent)

Notes

Les verbes

PUT: modifie une ressource nommée (non-safe, idempotent)

DELETE: supprime une resource (non-safe, idempotent)

PATCH: modifie partiellement une ressource (non-safe, idempotent)

Notes

Les URLs

/des/urls/lisibles

Notes

Les contenus

En général du JSON.

Avec des liens (hypermedia).

Un endpoint c'est une page web !!

Notes

Exemples

GET /customers

POST /orders
{"id": 1234 , "customer": 8769, "weight": 100}

PUT /orders/1234
{"customer": 8769, "weight": 100}

DELETE /customers/345

Notes

Exemples

{
    "id": 1234 ,
    "customers": [
        {"id": 8769, "weight": 100},
        {"id": 3877, "weight": 52},
        ... TROP LONG ...
        {"id": 85, "weight": 56},
        {"id": 64, "weight": 112}
    ]
}

devient ...

Notes

Exemples

{
    "id": 1234 ,
    "customers": "/customers/1234"
}

Notes

Les pièges

Notes

Les pièges

  • API incompréhensible,
  • API non-communiquable,
  • failles de sécurité,
  • inadéquation avec les attentes front.

Notes

REST n'est PAS SQL

On expose des services, pas des tables.

GET /accounts?id=eric => TRÈS FAIBLE
GET /accounts/eric => FAIBLE
GET /myaccount => FORT

Notes

Passer du full backend au frontend/backend

Normalement, rien ne change.

Mais...

Notes

La désintoxication post-ORM

Évitons le ORM-over-IP

Notes

Penser ressources

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.

Notes

La sécurité dans des couches trop hautes

En fullback, pas de contrainte (fondamentale) pour gérer la sécurité sur la couche qu'on souhaite.

Notes

Des développeurs différents

Là où un seul pouvait tout faire, on va avoir 2 personnes.

L'API REST devient leur contrat mutuel :

  • établir un consensus,
  • API documentée,
  • testée et testable.

Notes

Conclusion

Rien ne change, on garde les bonnes pratiques d'hier.

Mais maintenant elles ne sont plus optionnelles.

Donc tout change.

Notes

Notes