0% ont trouvé ce document utile (0 vote)
0 vues32 pages

API Design Youth Computing

Cette session présente les bonnes pratiques pour concevoir une API professionnelle, en abordant des concepts clés tels que la définition d'une API, le processus de conception, les différents types d'API et les styles d'architecture. Elle met également en avant l'importance d'un bon design API pour améliorer l'expérience développeur et réduire les erreurs. Les étapes clés du processus de conception incluent la planification, le développement, le test et le déploiement, accompagnées de bonnes pratiques en matière de sécurité et de documentation.

Transféré par

tiavina3180
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
0 vues32 pages

API Design Youth Computing

Cette session présente les bonnes pratiques pour concevoir une API professionnelle, en abordant des concepts clés tels que la définition d'une API, le processus de conception, les différents types d'API et les styles d'architecture. Elle met également en avant l'importance d'un bon design API pour améliorer l'expérience développeur et réduire les erreurs. Les étapes clés du processus de conception incluent la planification, le développement, le test et le déploiement, accompagnées de bonnes pratiques en matière de sécurité et de documentation.

Transféré par

tiavina3180
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

les bonnes

pratiques pour concevoir une API


professionnelle
Share Skill Session

Présenté par Dimitri


Chef Département d’Innovation Digitale
Au programme de cette session

01 Qu'est-ce qu'une API ?


La définition et pourquoi ça compte

Qu'est-ce que l'API Design ?


02 Le processus de conception intentionnelle

Protocoles & Styles


03 REST, GraphQL, SOAP, gRPC…

Les 4 étapes clés


04 Plan → Develop → Test → Deploy

Bonnes pratiques
05 Nommage, versioning, erreurs, sécurité…

Q&R & Recap


06 Questions, synthèse et ressources
Au programme de cette session

01 Qu'est-ce qu'une API ?


La définition et pourquoi ça compte

Qu'est-ce que l'API Design ?


02 Le processus de conception intentionnelle

Protocoles & Styles


03 REST, GraphQL, SOAP, gRPC…

Les 4 étapes clés


04 Plan → Develop → Test → Deploy

Bonnes pratiques
05 Nommage, versioning, erreurs, sécurité…

Q&R & Recap


06 Questions, synthèse et ressources
Objectifs de cette session
Définir ce qu’une API n’est pas ?

Un logiciel : un logiciel n’est pas une API (même s’il peut se présenter sous la
forme d’une API pour faciliter l’utilisation de ses fonctionnalités).

Une interface utilisateur : une interface utilisateur n’est pas une API (mais
elle peut s’exécuter sur une interface utilisateur)

Un serveur : un serveur n’est pas une API (mais il peut héberger une ou plusieurs
API qui fournissent les données et fonctions mises à disposition par le serveur).
Qu’est ce qu’une API ?

Une API (Application Programming


Interface ou « interface de
programmation d'application ») est une
interface logicielle qui permet de «
connecter » un logiciel ou un service à un
autre logiciel ou service afin d'échanger
des données et des fonctionnalités.
Une API comme un produit

Comme une API est un produit, avant d’en développer une,


posez vous ces questions clés :

✓ Quels consommateurs visez-vous ?

✓ Comment allez-vous toucher ces consommateurs ?

✓ Dans quelles conditions ces consommateurs peuvent-ils


utiliser cette API ?
Pourquoi nous avons besoin d’une API ?

Les API sont essentielles à la création de systèmes évolutifs, flexibles et connectés. Voici
pourquoi les développeurs
s'appuient sur elles :
Réutilisabilité : Évitez de réinventer la roue en tirant parti des API existantes (par
exemple, l'API Google Maps,
l'API Stripe Payments).
Efficacité : Gagnez du temps de développement en intégrant des fonctionnalités prêtes à
l'emploi.
Évolutivité : Permettre la mise en place de systèmes modulaires et distribués, capables de
s'étendre facilement.
Intégration : Connectez plusieurs plateformes web, mobiles, IoT ou analytiques.
Automatisation : les API permettent aux machines de communiquer entre elles sans
intervention manuelle.
Exemple quotidien d’une API

 Bibliothèque logicielle

 Pilote de matériel

 API web
Exemple quotidien d’une API
API de bibliothèque logicielle
Un programme qui utilise l’API de la bibliothèque json pour
• Bibliothèque écrire un fichier
logicielle .json

• Pilote de matériel import json


data = {
• API web "nom": "John",
"age": 30,
"ville": "Paris"
}
# Écriture du dictionnaire dans un fichier JSON
with open("[Link]", "w") as f:
[Link](data, f)
Exemple quotidien d’une API

API d’un matériel


• Bibliothèque Un programme qui utilise une API pour activer un
logicielle signal sur un port GPIO

• Pilote de matériel
import [Link] as GPIO
• API web [Link]([Link])
[Link](17, [Link])
# On envoie un signal de force maximale
sur le pin 17
[Link](17, [Link])
Exemple quotidien d’une API

API WEB
• Bibliothèque Un programme qui utilise l’API de la BAN pour faire
logicielle du géocodage

• Pilote de matériel Curl'https [Link]/geocodage/se


arch?q=Refuge%20 c
• API web du%20pelvoux&limit=1&index=poi&returntr
uegeometry='
Les différentes types d’API

Les APIs sont classées selon leurs modèles d'utilisation et leurs architectures.
Types d'API selon leur finalité
API interne : Ce type d’API est utilisé uniquement par certaines personnes et reste
invisible aux utilisateurs externes. Définie pour des services spécifiques de
l’entreprise, elle est généralement réservée à la réutilisation et à la production.
API ouvertes : API accessibles aux développeurs et à tous. Elles sont également
appelées API publiques. On distingue deux types d’API : payantes et gratuites.
API partenaires : Les API qui permettent aux systèmes d’entreprises partenaires de
coordonner leurs opérations communes sont appelées API partenaires. Elles ne
sont pas accessibles à tous. Par exemple, la communication entre un site de
commerce électronique et une entreprise de transport de marchandises s’effectue
via une API partenaire.
API composite : Les API composites sont des API qui combinent plusieurs API de
données ou de services, permettant aux développeurs d’accéder à plusieurs points
de terminaison en un seul appel
Les styles d'architecture API

REST GraphQL gRPC SOAP


Le plus répandu Flexible Haute perf. Legacy

✓ Avantages ✓ Avantages ✓ Avantages ✓ Avantages

• Simple & stateless • Requêtes précises • Très performant • Standard strict


• Streaming
• HTTP natif • Typage fort • WS-Security
bidirectionnel
• Large adoption • Introspection • Code généré

✗ Limites ✗ Limites ✗ Limites ✗ Limites


• Over/Under-
• Complexité serveur • Moins lisible • Verbeux XML
fetching
• Lourd à
• Versioning • Caching difficile • Outils limités
implémenter
complexe
Fonctionnement d’une API en générale
Pourquoi un bon design API est cruciale ?

80% 3× 30%
des développeurs abandonnent plus rapide avec une des tickets support liés
une API mal documentée bonne API que sans à une API mal conçue

Accélère le Favorise la
Ouvre l'écosystème Sécurise les échanges
développement modularité
Réutilisation des services Découplage des Intégrations partenaires et
Contrôle d'accès centralisé
entre équipes composants système third-party
Qu'est-ce que l'API Design ?
Concevoir intentionnellement avant de coder

L'API Design est le processus de prise de décisions intentionnelles sur la façon


dont une API expose ses données et fonctionnalités à ses consommateurs.

Meilleure qualité Alignement des équipes

Des APIs bien conçues dès le départ sont plus Design = langage commun entre développeurs,
stables, plus simples à utiliser et moins product managers et consommateurs de l'API.
coûteuses à maintenir.

Gouvernance & Standards Time-to-market réduit

IBM et Postman insistent : le design est la base En définissant le contrat en amont, les équipes
de toute stratégie de gouvernance API à front et back peuvent travailler en parallèle —
l'échelle de l'organisation. les mocks remplacent le vrai serveur.
Les 4 étapes clés du processus
un processus collaboratif de bout en bout

01 02 03 04

PLAN DEVELOP TEST DEPLOY

Aligner toutes les


Définir les endpoints, Créer des mock Déployer avec une
parties prenantes sur
le modèle de données, servers pour valider le documentation
le cas d'usage, les
les méthodes HTTP, la comportement. Tester finalisée. Avoir une
objectifs business et
sécurité, les codes : contrats, unitaire, stratégie de
les contraintes.
d'erreur. Écrire la charge, end-to-end. versioning claire avant
Répondre à : Pourquoi
spécification Identifier les bugs le lancement pour
cette API ? Pour qui ?
OpenAPI/AsyncAPI. avant la prod. gérer les futures
Quelles données ?
évolutions.
→ Livrable : Description → Livrable : Fichier de
→ Livrable : Rapport de → Livrable : API en prod +
en langage naturel du spécification (contrat
tests + mock servers documentation publique
comportement attendu API)
validés
Les principes fondamentaux du REST API

Client-Serveur Sans état (Stateless) Cache

Séparation des Chaque requête est Les réponses doivent


responsabilités. Le frontend indépendante. Pas de indiquer si elles sont
ne doit pas connaître la DB. session serveur. Le client cachables. Réduit la charge.
envoie tout le contexte.

Interface Uniforme Système en couches Code à la demande

URIs logiques, verbes HTTP Le client ne sait pas s'il parle (Optionnel) Le serveur peut
standards, format JSON à un proxy, un CDN ou envoyer du code exécutable
cohérent partout. directement au serveur. au client (scripts JS).
Les Verbes HTTP CRUD → REST
Verbe CRUD Description Exemple Idempotent / Safe
Idempotent
GET Read Récupérer une ressource GET /api/v1/products
Safe

Non idempotent
POST Create Créer une nouvelle ressource POST /api/v1/products
Non safe

Idempotent
Remplacer entièrement une
PUT Update (total)
ressource
PUT /api/v1/products/5
Non safe

Selon impl.
Modifier partiellement une
PATCH Update (partiel)
ressource
PATCH /api/v1/products/5
Non safe

Idempotent
DELETE Delete Supprimer une ressource DELETE /api/v1/products/5
Non safe
Nommage des Endpoints : Les Règles d'Or
Noms pluriels pour les collections Les collec ons con ennent plusieurs items → pluriel
1 GET /api/v1/users GET /api/v1/user

Hiérarchie logique pour les sous-ressources L'URL reflète la rela on parent → enfant
2
GET /orders/12/items/3 GET /getOrderItem?orderId=12&itemId=3

Kebab-case pour les URLs URLs en lowercase, tirets pour la lisibilité

3 GET /product-categories GET /productCategories ou /Product_Categories

Jamais de verbes dans les URLs Le verbe HTTP FAIT le travail, pas l'URL
4 DELETE /users/42 GET /deleteUser?id=42

Versioning dès le départ Permet de faire évoluer l'API sans casser les clients existants
5 GET /api/v1/products GET /products (sans version)
Codes de Statut HTTP : Parlez le bon langage
2xx — Succès

200 OK Réponse standard GET, PUT, PATCH réussie


201 Created POST réussi — ressource créée (+ header Location)
204 No Content DELETE réussi — rien à retourner

4xx — Erreur Client

400 Bad Request Requête malformée, données invalides


401 Unauthorized Non authentifié (pas de token / token expiré)
403 Forbidden Authentifié mais pas autorisé (rôle insuffisant)
404 Not Found La ressource demandée n'existe pas
422 Unprocessable Données comprises mais échouent la validation
429 Too Many Req. Rate limiting dépassé

5xx — Erreur Serveur

500 Internal Error Erreur inattendue côté serveur (bug, crash)


503 Unavailable Service temporairement indisponible (maintenance)
Structure des Réponses JSON & Pagination
Structure Recommandée (collection) À éviter

{ // Tableau brut sans enveloppe


"data": [ [
{ { "id": 1, "name": "Alice" },
"id": 1, { "id": 2, "name": "Bob" }
"name": "Alice", ]
"email": "alice@[Link]" // Pas de meta, pas de pagination → impossible
} // d'ajouter des infos sans casser les clients
],
"meta": {
"total": 150,
"page": 2,
Stratégies de Pagination
"per_page": 20,
Offset/Limit
"total_pages": 8
}, /users?page=2&per_page=20
"links": { → Simple, courant, adapté aux UIs classiques
"self": "/api/v1/users?page=2", Cursor
"next": "/api/v1/users?page=3", /users?cursor=eyJpZCI6MjB9&limit=20
"prev": "/api/v1/users?page=1" → Haute perf, pour flux infinis (feeds)
} Keyset
} /users?after_id=20&limit=20
→ Stable, évite les doublons sur données qui changent
Sécurité de l'API : Les Indispensables
Authentification JWT HTTPS Obligatoire Rate Limiting
Toujours TLS/SSL en production. Jamais
Header: Authorization: Bearer <token>
HTTP. Limiter le nb de requêtes par IP / par user
JWT = [Link] (base64)
→ Protège contre les attaques man-in- Ex: 100 requêtes / 15 minutes
→ Apatride, signé, non modifiable sans la
the-middle Réponse : HTTP 429 Too Many Requests
clé secrète
→ Redirect 301 automatique HTTP → Headers: X-RateLimit-Limit: 100 / X-
→ Expira on courte recommandée :
HTTPS RateLimit-Remaining: 42
15min (+ refresh token)
→ HSTS header pour forcer HTTPS

CORS Validation des Entrées Ne jamais exposer


TOUJOURS valider et sanitiser les données
Cross-Origin Resource Sharing Passwords en clair dans les réponses
reçues
Définir quels domaines peuvent appeler Stack traces en production (500 →
→ Injec on SQL : jamais de requête SQL
votre API message générique)
concaténée
Ne jamais mettre Access-Control-Allow- Clés API, secrets dans les URLs (dans
→ Schemas de valida on (Joi, Zod,
Origin: * en prod! le body !)
Pydantic...)
→ Whitelist explicite des domaines IDs séquentiels prévisibles (utiliser
→ Limiter la taille des payloads (ex: max
autorisés UUID)
5MB)
Documentation & Bonnes Pratiques Avancées
OpenAPI / Swagger Filtrage, Tri, Recherche

Le standard de documentation d'API


→ Fichier YAML/JSON qui décrit chaque endpoint Filtrer : /products?category=phones&price_min=100
→ Swagger UI génère une doc interac ve
→ Testez directement dans le browser
→ Génère des SDKs automa quement Trier : /products?sort=price&order=asc

Exemple : GET /users/{id}: Champs :


summary: Get a user by ID /users?fields=id,name,email
parameters:
- in: path Recherche : /products?q=iphone+pro
name: id
required: true /products?category=phones&sort=price
Combiner :
&page=1&per_page=20&fields=id,name,price

HATEOAS (niveau expert) Checklist Pro avant déploiement

HTTPS ac vé + redirect HTTP→HTTPS


{
"id": 42, Authentication + Authorization en place
"status": "pending",
"_links": { Rate limiting configuré
"self": "/orders/42", Validation des inputs sur tous les endpoints
"cancel": "/orders/42/cancel",
"payment": "/orders/42/pay" Logs structurés (request ID, timestamp, status)
}
Documentation OpenAPI à jour
}
Tests d'intégration sur les endpoints critiques
Récapitulatif
Les 6 piliers d'une API bien conçue
Cohérence des ressources et
1 2 Verbes HTTP sémantiques
URIs

3 Codes de réponse appropriés 4 Versioning dès le départ

Sécurité & authentification Documentation vivante


5 6
robuste (OpenAPI)

Ressources recommandées :

→ REST API Design Rulebook (Masse) → OpenAPI Spec 3.1 — [Link] → API Security Checklist (github) → [Link] — Docs officielles
Merci pour votre aimable attention!
Introduction au API Design
Des questions ?

Bonne chance dans vos projets API !

Vous aimerez peut-être aussi