Bonnes pratiques API - Paris Web 2013

2 594 vues

Publié le

L'API est un peu le Graal des données mais elle a un défaut majeur : une fois publiée, vous n'en contrôlez plus les clients, et faire évoluer les bases n'est pas évident. Ce que vous construisez est là pour longtemps. Quelles sont les retours d'expériences et bonnes pratiques pour ne pas se prendre les pieds dans le tapis ?

Vous avez certainement déjà entendu parler de REST, mais les choses sont plus complexes que ça. Comment gérer les évolutions et les versions de l'API ? Les formats en entrée et en sortie ? Les variations et paramètres d'une même ressource ? Les relations entre ressources ? La sécurité ? L'authentification ? La gestion des erreurs ? La pagination ? L'i18n et l10n ? Qu'est-ce que l'hypermedia ?

Plus généralement, nous partons avec pour objectif premier de concevoir une API le plus tôt possible, avec des bases solides mais les plus simples possible.

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 594
Sur SlideShare
0
Issues des intégrations
0
Intégrations
269
Actions
Partages
0
Téléchargements
30
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Bonnes pratiques API - Paris Web 2013

  1. 1. Bonnes pratiques des API eric.daspet.name www.tea-ebook.com
  2. 2. SOAP(hahaha!) Enveloppe REST Direct HTTP Media type HATEOAS Hypermedia Relations Links
  3. 3. Pragmatisme Utilisateur Bidouilleur Compréhension Raccourcis Littérature Simplicité
  4. 4. I18N Dates Heures Locales GMT Fuseau horaire Langues UTF8 ISO
  5. 5. Pagination offset + quantité after | before Optionnel Obligatoire Cache Limites Limites2
  6. 6. Versionnement imParfait Erreurs Évolution Évolution2 Compatibilité Refonte Refonte! /v2/…
  7. 7. Sécurité Fait maison HTTP Basic Oauth /! HTTPS SSL / TLS Désactivable Clef d’API
  8. 8. Structure Découverte par (Hypermedia) Bidouillables Prédictibles Libres Sans surprise (/[a-z0-9-]+)+(.[a-z]+)? /collection/item/lien
  9. 9. En faire peu …en ouvrant les possibles Enrichir dans un second temps SIMPLE, Standard, Pragmatique Questions ? Débat ? Désaccord ? -> informelles eric.daspet.name www.tea-ebook.com
  10. 10. Images réutilisées sous licence Creative Commons http://www.flickr.com/photos/mctumshie/8016134432/ par Andrew Smith sous CC-BY-NC-ND http://www.flickr.com/photos/jstar/32486696/ par J. Star sous CC-BY-NC-SA http://geek-and-poke.com/geekandpoke/2013/6/14/insulting-made-easy par Geek and Poke, sous CC-BY http://www.flickr.com/photos/adamcohn/3076525070/ par Adam Cohn sous CC-BY-NC-ND http://www.flickr.com/photos/clintjcl/5940857187/ par Rev. Xanatos Satanicos sous CC-NC-SA http://www.flickr.com/photos/designwallah/4885177922/ par Francis Mariani sous CC-NC-ND http://www.flickr.com/photos/leebennett/3181855130/ by Lee Bennett sous CC-BY-NC-SA http://www.flickr.com/photos/leamarzloff/3204021240/ par Lea Marzloff sous CC-BY-NC-ND http://www.flickr.com/photos/hellocatfood/5799842139/ par Antonio Roberts sous CC-BY-NC-SA http://www.flickr.com/photos/janisbrass/8078718025/ par Memaxmarz sous CC-BY-NC-ND http://www.flickr.com/photos/hellocatfood/5799842139/ par Antonio Roberts sous CC-BY-NC-SA
  11. 11. 1. Fournir un SDK + un générateur d’exemples (ex: Twilio) 2. Fuir l’optionnel et le paramétrable, rendre obligatoire et explicite 3. Aucune information essentielle dans les entêtes 4. Paramètres génériques, valables sur toute l’API 5. Numéroter les erreurs avec un identifiant unique à tous vos projets 6. Ne pas se fier aux identifiants uniques externes 7. Mettre ses identifiants principaux au format texte 8. Penser au cache (if-modified-since, etag) 9. Toujours utiliser un sous-objet, pas de libellé ou code en direct 10. Utiliser un domaine distinct pour l’API
  12. 12. En faire peu …en ouvrant les possibles Enrichir dans un second temps SIMPLE, Standard, Pragmatique Questions ? Débat ? Désaccord ? -> informelles eric.daspet.name www.tea-ebook.com

×