Bonnes pratiques API - Paris Web 2013

2,747 views

Published on

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.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,747
On SlideShare
0
From Embeds
0
Number of Embeds
271
Actions
Shares
0
Downloads
32
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

×