SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Développement
par l'API
MIX-IT 2013
Éric Daspet - David Larlet
Qui sommes-nous ?
Éric Daspet
•  TEA, livre num.
•  PHP 5 avancé
•  Performances web
•  Paris-Web
eric.daspet.name
David Larlet
•  scopyleft
•  artisan
•  geek
•  citoyen
larlet.fr/david
no-conférence
nous n'enseignons pas,
nous échangeons nos expériences
Qu'abordons-nous
Par quoi commencer ?
Comment structurer ?
Quels formats ?
Comment ajouter une
nouvelle version ?
Que faire des erreurs ?
Comment sécuriser ?
Comment gérer les spams
et les abus ?
Comment paginer ?
Hypermédia et découverte,
késaco ?
Quelles autres bonnes
pratiques ?
Par quoi
commencer ?
Mobile first ?
API First
D'abord mener la réflexion sur les données
et sur comment elles seront utilisées
Penser l'API en prenant la place de l'utilisateur
Et si vous deveniez votre propre utilisateur ?
Éventuellement en commençant par le mobile
ou y brancher des applicatifs indépendants
Comment
structurer ?
Appel, URL, ressources, hiérarchies
Structure
REST, fuyez SOAP, évitez le "truc perso"
Ne vous limitez pas aux verbes, utilisez HTTP
Une ressource = un nom, en minuscules
hiérarchies à plat, /ressource/ et /ressource/id
profondeur limitée à /ressource/id/ressource
vs. approche liée (hypermedia)
Quel(s)
format(s)
JSON, ATOM, XML, (x)HTML, RDF,
www-form-urlencoded, ...
Format
Requêtes : pensez au form-encoded
Utilisez des formats standard !
Utilisez un format extensible pour plus tard
Utilisez une extension de fichier dans l'URL
Déclarez le format dans les entêtes
Imposez le format, et le codage (UTF8 svp)
Comment faire
une nouvelle
version ?
v1.2.4-beta
Versionnement
Restez compatible : même URI, ajout de
paramètres optionnels, valeurs additionnelles
Si besoin d'une nouvelle version :
•  uniquement des versions majeures (v1, v2)
•  /v2/* en racine du service
•  rarement dans le chemin de la ressource
vs. approche liée (hypermedia)
Que faire des
erreurs ?
Erreurs
Utilisez les erreurs HTTP
au minimum 2xx, 3xx, 4xx, 5xx
Détail dans le corps du message respectant le
format attendu
Code + lien vers l'aide en ligne correspondante
message : pour dev ou pour utilisateur final ?
différenciez bien les deux
Comment
sécuriser ?
Sécurité
Utilisez ce que vous maîtrisez
Toujours du SSL, toujours valider les certificats
Auth HTTP basic fonctionne très bien
Auth déléguée : OAuth 1, attention à OAuth 2
Évitez les cookies de session (CRSF)
Demandez une clef d'api par applicatif
Comment gérer
les spams et
abus ?
SPAM et abus
Throttling/métriques
•  par IP
•  par application (clef d'API)
•  par utilisateur
Coûteux en ressources, mais indispensable
Quid d'imposer de toujours être authentifié ?
Limiter la taille des résultats
Timeout contre les requêtes longues
Comment
paginer ?
Pagination
Faire simple ? pas ici, pièges en vue
Cas simple : sort + order + limit + offset
Hypermedia : liens rel=next, rel=prev
Quid des nouveaux items entre 2 requêtes ?
exemple avec twitter :
paramètre since, upto avec une date ou un id
Hypermédia et
découvertes,
késaco ?
Hypermédia et découverte
Envisager votre API comme votre site Web :
navigable, standard, indexable, évolutif.
Ne plus fournir des ids mais des liens
Utiliser un format qui permette d'utiliser
l'hypertext (pas JSON par exemple)
Un point d'entrée unique devrait suffire
Quelles bonnes
pratiques ?
Bonnes pratiques
Soyez en relation avec vos utilisateurs
Dates au format ISO, *avec* fuseaux horaires
Utilisez des codes, pas des messages texte
Hypermedia : documentez les types de liens
Améliorer les performances a posteriori
(préchargement des sous-ressources)
Pas de
questions
Normalement c'est déjà fait :-)
Quelques retours sur le format utilisé ?

Contenu connexe

En vedette

Etude de cas e-réputation - groupe 4
Etude de cas e-réputation - groupe 4Etude de cas e-réputation - groupe 4
Etude de cas e-réputation - groupe 4Christophe Blazquez
 
Quizz île de la réunion
Quizz île de la réunionQuizz île de la réunion
Quizz île de la réunionHANNA974
 
Nueva generacion padres familia
Nueva generacion padres familiaNueva generacion padres familia
Nueva generacion padres familiaCarlos Medina
 
Flisol 2010 open street map - mapeando colaborativamente [2010-03]
Flisol 2010   open street map - mapeando colaborativamente [2010-03]Flisol 2010   open street map - mapeando colaborativamente [2010-03]
Flisol 2010 open street map - mapeando colaborativamente [2010-03]crio_
 
La veille de nekid du 05.05.11 le mass mingling
La veille de nekid du 05.05.11   le mass minglingLa veille de nekid du 05.05.11   le mass mingling
La veille de nekid du 05.05.11 le mass minglingNé Kid
 
Impôts 2011 Genève
Impôts 2011 GenèveImpôts 2011 Genève
Impôts 2011 GenèveEricDuvoisin
 
Comment Allons Nous Nous Organiser Vs030608
Comment Allons Nous Nous Organiser Vs030608Comment Allons Nous Nous Organiser Vs030608
Comment Allons Nous Nous Organiser Vs030608Afet
 
Tiempos de confrontación en España
Tiempos de confrontación en EspañaTiempos de confrontación en España
Tiempos de confrontación en Españaguest855399
 
Informe tarea 3 grupo 4
Informe  tarea 3 grupo 4Informe  tarea 3 grupo 4
Informe tarea 3 grupo 4Vane Torres
 
Adivina La Nacionalidad
Adivina La NacionalidadAdivina La Nacionalidad
Adivina La Nacionalidadguest85f3105
 
Etude de cas e-réputation - groupe 3
Etude de cas e-réputation - groupe 3Etude de cas e-réputation - groupe 3
Etude de cas e-réputation - groupe 3Christophe Blazquez
 
El Impresionismopa
El ImpresionismopaEl Impresionismopa
El Impresionismopapililuna
 
Evenement Eco-responsable
Evenement Eco-responsableEvenement Eco-responsable
Evenement Eco-responsableguest33eea52
 

En vedette (20)

Maj Dream
Maj DreamMaj Dream
Maj Dream
 
Etude de cas e-réputation - groupe 4
Etude de cas e-réputation - groupe 4Etude de cas e-réputation - groupe 4
Etude de cas e-réputation - groupe 4
 
Quizz île de la réunion
Quizz île de la réunionQuizz île de la réunion
Quizz île de la réunion
 
Lugless
LuglessLugless
Lugless
 
Nueva generacion padres familia
Nueva generacion padres familiaNueva generacion padres familia
Nueva generacion padres familia
 
Flisol 2010 open street map - mapeando colaborativamente [2010-03]
Flisol 2010   open street map - mapeando colaborativamente [2010-03]Flisol 2010   open street map - mapeando colaborativamente [2010-03]
Flisol 2010 open street map - mapeando colaborativamente [2010-03]
 
La veille de nekid du 05.05.11 le mass mingling
La veille de nekid du 05.05.11   le mass minglingLa veille de nekid du 05.05.11   le mass mingling
La veille de nekid du 05.05.11 le mass mingling
 
Impôts 2011 Genève
Impôts 2011 GenèveImpôts 2011 Genève
Impôts 2011 Genève
 
Comment Allons Nous Nous Organiser Vs030608
Comment Allons Nous Nous Organiser Vs030608Comment Allons Nous Nous Organiser Vs030608
Comment Allons Nous Nous Organiser Vs030608
 
Tiempos de confrontación en España
Tiempos de confrontación en EspañaTiempos de confrontación en España
Tiempos de confrontación en España
 
Informe tarea 3 grupo 4
Informe  tarea 3 grupo 4Informe  tarea 3 grupo 4
Informe tarea 3 grupo 4
 
Adivina La Nacionalidad
Adivina La NacionalidadAdivina La Nacionalidad
Adivina La Nacionalidad
 
estudios
estudiosestudios
estudios
 
Cómo crear un blog
Cómo crear un blogCómo crear un blog
Cómo crear un blog
 
Roadbook GIR
Roadbook GIRRoadbook GIR
Roadbook GIR
 
Etude de cas e-réputation - groupe 3
Etude de cas e-réputation - groupe 3Etude de cas e-réputation - groupe 3
Etude de cas e-réputation - groupe 3
 
El Impresionismopa
El ImpresionismopaEl Impresionismopa
El Impresionismopa
 
Evenement Eco-responsable
Evenement Eco-responsableEvenement Eco-responsable
Evenement Eco-responsable
 
bouteille
bouteillebouteille
bouteille
 
Gun report fr
Gun report frGun report fr
Gun report fr
 

Similaire à Api - mix it 2013

Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Cédric Leblond
 
LemonLDAP::NG, un WebSSO libre
LemonLDAP::NG, un WebSSO libreLemonLDAP::NG, un WebSSO libre
LemonLDAP::NG, un WebSSO libreClément OUDOT
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
API Hypermedia - Devoxx 2015
API Hypermedia - Devoxx 2015API Hypermedia - Devoxx 2015
API Hypermedia - Devoxx 2015David MARTIN
 
Groupware et outils web en projet sept 2014
Groupware et outils web en projet sept 2014Groupware et outils web en projet sept 2014
Groupware et outils web en projet sept 2014Rémi Bachelet
 
Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php Barcamp Tunisie
 
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHP : Une Plateforme Industrialisable Au Service De L'AgilitéPHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHP : Une Plateforme Industrialisable Au Service De L'AgilitéPHPPRO
 
Lbv Dev Meetup #3
Lbv Dev Meetup #3Lbv Dev Meetup #3
Lbv Dev Meetup #3LbvDev
 
Wbm11 formation-webmaster-expert-responsive-web-design-rwd-microdata-schema-o...
Wbm11 formation-webmaster-expert-responsive-web-design-rwd-microdata-schema-o...Wbm11 formation-webmaster-expert-responsive-web-design-rwd-microdata-schema-o...
Wbm11 formation-webmaster-expert-responsive-web-design-rwd-microdata-schema-o...CERTyou Formation
 
Drupagora 2013 : introduction drupal
Drupagora 2013 :  introduction drupalDrupagora 2013 :  introduction drupal
Drupagora 2013 : introduction drupalCyril Reinhard
 
API-First pour de nouvelles expériences de commerce en ligne
API-First pour de nouvelles expériences de commerce en ligneAPI-First pour de nouvelles expériences de commerce en ligne
API-First pour de nouvelles expériences de commerce en lignePrénom Nom de famille
 
Rapport messagerie instantanée avec open fire
Rapport messagerie instantanée avec open fireRapport messagerie instantanée avec open fire
Rapport messagerie instantanée avec open fireMame Cheikh Ibra Niang
 
Quand on change de code, on prévient !(1)
Quand on change de code, on prévient !(1)Quand on change de code, on prévient !(1)
Quand on change de code, on prévient !(1)Guillaume Renaudin
 
Introduction dans la Programmation Web Course 1
Introduction dans la Programmation Web Course 1Introduction dans la Programmation Web Course 1
Introduction dans la Programmation Web Course 1Vlad Posea
 
Déjeuner-débat EIM360 | Machine Learning et Transformation Digitale, un duo g...
Déjeuner-débat EIM360 | Machine Learning et Transformation Digitale, un duo g...Déjeuner-débat EIM360 | Machine Learning et Transformation Digitale, un duo g...
Déjeuner-débat EIM360 | Machine Learning et Transformation Digitale, un duo g...SOLLAN FRANCE
 
Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !SpikeeLabs
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableChristophe Villeneuve
 

Similaire à Api - mix it 2013 (20)

Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !
 
LemonLDAP::NG, un WebSSO libre
LemonLDAP::NG, un WebSSO libreLemonLDAP::NG, un WebSSO libre
LemonLDAP::NG, un WebSSO libre
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
API Hypermedia - Devoxx 2015
API Hypermedia - Devoxx 2015API Hypermedia - Devoxx 2015
API Hypermedia - Devoxx 2015
 
Groupware et outils web en projet sept 2014
Groupware et outils web en projet sept 2014Groupware et outils web en projet sept 2014
Groupware et outils web en projet sept 2014
 
Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php
 
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHP : Une Plateforme Industrialisable Au Service De L'AgilitéPHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
 
Lbv Dev Meetup #3
Lbv Dev Meetup #3Lbv Dev Meetup #3
Lbv Dev Meetup #3
 
Création ou refonte de site Internet
Création ou refonte de site InternetCréation ou refonte de site Internet
Création ou refonte de site Internet
 
Wbm11 formation-webmaster-expert-responsive-web-design-rwd-microdata-schema-o...
Wbm11 formation-webmaster-expert-responsive-web-design-rwd-microdata-schema-o...Wbm11 formation-webmaster-expert-responsive-web-design-rwd-microdata-schema-o...
Wbm11 formation-webmaster-expert-responsive-web-design-rwd-microdata-schema-o...
 
Drupagora 2013 : introduction drupal
Drupagora 2013 :  introduction drupalDrupagora 2013 :  introduction drupal
Drupagora 2013 : introduction drupal
 
API-First pour de nouvelles expériences de commerce en ligne
API-First pour de nouvelles expériences de commerce en ligneAPI-First pour de nouvelles expériences de commerce en ligne
API-First pour de nouvelles expériences de commerce en ligne
 
Rapport messagerie instantanée avec open fire
Rapport messagerie instantanée avec open fireRapport messagerie instantanée avec open fire
Rapport messagerie instantanée avec open fire
 
Quand on change de code, on prévient !(1)
Quand on change de code, on prévient !(1)Quand on change de code, on prévient !(1)
Quand on change de code, on prévient !(1)
 
Création & refonte de site internet
Création & refonte de site internet Création & refonte de site internet
Création & refonte de site internet
 
Introduction dans la Programmation Web Course 1
Introduction dans la Programmation Web Course 1Introduction dans la Programmation Web Course 1
Introduction dans la Programmation Web Course 1
 
Déjeuner-débat EIM360 | Machine Learning et Transformation Digitale, un duo g...
Déjeuner-débat EIM360 | Machine Learning et Transformation Digitale, un duo g...Déjeuner-débat EIM360 | Machine Learning et Transformation Digitale, un duo g...
Déjeuner-débat EIM360 | Machine Learning et Transformation Digitale, un duo g...
 
Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 

Plus de Eric D.

Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013Eric D.
 
Blend Web Mix 2013 : Concevoir son API
Blend Web Mix 2013 : Concevoir son APIBlend Web Mix 2013 : Concevoir son API
Blend Web Mix 2013 : Concevoir son APIEric D.
 
Un peu de TLS ne fait pas de mal - Sudweb 2013
Un peu de TLS ne fait pas de mal - Sudweb 2013Un peu de TLS ne fait pas de mal - Sudweb 2013
Un peu de TLS ne fait pas de mal - Sudweb 2013Eric D.
 
Performance des applications web - USI Casa 2011
Performance des applications web - USI Casa 2011Performance des applications web - USI Casa 2011
Performance des applications web - USI Casa 2011Eric D.
 
Webpagetest en 5 minutes - Sud Web 2011
Webpagetest en 5 minutes - Sud Web 2011Webpagetest en 5 minutes - Sud Web 2011
Webpagetest en 5 minutes - Sud Web 2011Eric D.
 
Soirée webperf du 29 nov 2010 - Latence et CDN
Soirée webperf du 29 nov 2010 - Latence et CDNSoirée webperf du 29 nov 2010 - Latence et CDN
Soirée webperf du 29 nov 2010 - Latence et CDNEric D.
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005Eric D.
 
Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Eric D.
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
 
Yahoo! Search monkey API - CEBIT 2008
Yahoo! Search monkey API - CEBIT 2008Yahoo! Search monkey API - CEBIT 2008
Yahoo! Search monkey API - CEBIT 2008Eric D.
 
Yahoo! Fire eagle API - CEBIT 2008
Yahoo! Fire eagle API - CEBIT 2008Yahoo! Fire eagle API - CEBIT 2008
Yahoo! Fire eagle API - CEBIT 2008Eric D.
 
Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Eric D.
 
Frameworks php - Solutions Linux 2008
Frameworks php - Solutions Linux 2008Frameworks php - Solutions Linux 2008
Frameworks php - Solutions Linux 2008Eric D.
 
Un web ouvert, Paris Web 2009
Un web ouvert, Paris Web 2009Un web ouvert, Paris Web 2009
Un web ouvert, Paris Web 2009Eric D.
 
Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010
Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010
Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010Eric D.
 
Introduction à la soirée webperf du 21 juillet 2010, Paris
Introduction à la soirée webperf du 21 juillet 2010, ParisIntroduction à la soirée webperf du 21 juillet 2010, Paris
Introduction à la soirée webperf du 21 juillet 2010, ParisEric D.
 
Performance des sites web - Latence - AFUP 2010
Performance des sites web - Latence - AFUP 2010Performance des sites web - Latence - AFUP 2010
Performance des sites web - Latence - AFUP 2010Eric D.
 
web, métier de valeur - Paris Web 2010
web, métier de valeur - Paris Web 2010web, métier de valeur - Paris Web 2010
web, métier de valeur - Paris Web 2010Eric D.
 
Performances Web - Afup 2008
Performances Web - Afup 2008Performances Web - Afup 2008
Performances Web - Afup 2008Eric D.
 

Plus de Eric D. (19)

Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013
 
Blend Web Mix 2013 : Concevoir son API
Blend Web Mix 2013 : Concevoir son APIBlend Web Mix 2013 : Concevoir son API
Blend Web Mix 2013 : Concevoir son API
 
Un peu de TLS ne fait pas de mal - Sudweb 2013
Un peu de TLS ne fait pas de mal - Sudweb 2013Un peu de TLS ne fait pas de mal - Sudweb 2013
Un peu de TLS ne fait pas de mal - Sudweb 2013
 
Performance des applications web - USI Casa 2011
Performance des applications web - USI Casa 2011Performance des applications web - USI Casa 2011
Performance des applications web - USI Casa 2011
 
Webpagetest en 5 minutes - Sud Web 2011
Webpagetest en 5 minutes - Sud Web 2011Webpagetest en 5 minutes - Sud Web 2011
Webpagetest en 5 minutes - Sud Web 2011
 
Soirée webperf du 29 nov 2010 - Latence et CDN
Soirée webperf du 29 nov 2010 - Latence et CDNSoirée webperf du 29 nov 2010 - Latence et CDN
Soirée webperf du 29 nov 2010 - Latence et CDN
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
Yahoo! Search monkey API - CEBIT 2008
Yahoo! Search monkey API - CEBIT 2008Yahoo! Search monkey API - CEBIT 2008
Yahoo! Search monkey API - CEBIT 2008
 
Yahoo! Fire eagle API - CEBIT 2008
Yahoo! Fire eagle API - CEBIT 2008Yahoo! Fire eagle API - CEBIT 2008
Yahoo! Fire eagle API - CEBIT 2008
 
Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009
 
Frameworks php - Solutions Linux 2008
Frameworks php - Solutions Linux 2008Frameworks php - Solutions Linux 2008
Frameworks php - Solutions Linux 2008
 
Un web ouvert, Paris Web 2009
Un web ouvert, Paris Web 2009Un web ouvert, Paris Web 2009
Un web ouvert, Paris Web 2009
 
Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010
Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010
Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010
 
Introduction à la soirée webperf du 21 juillet 2010, Paris
Introduction à la soirée webperf du 21 juillet 2010, ParisIntroduction à la soirée webperf du 21 juillet 2010, Paris
Introduction à la soirée webperf du 21 juillet 2010, Paris
 
Performance des sites web - Latence - AFUP 2010
Performance des sites web - Latence - AFUP 2010Performance des sites web - Latence - AFUP 2010
Performance des sites web - Latence - AFUP 2010
 
web, métier de valeur - Paris Web 2010
web, métier de valeur - Paris Web 2010web, métier de valeur - Paris Web 2010
web, métier de valeur - Paris Web 2010
 
Performances Web - Afup 2008
Performances Web - Afup 2008Performances Web - Afup 2008
Performances Web - Afup 2008
 

Api - mix it 2013

  • 2. Qui sommes-nous ? Éric Daspet •  TEA, livre num. •  PHP 5 avancé •  Performances web •  Paris-Web eric.daspet.name David Larlet •  scopyleft •  artisan •  geek •  citoyen larlet.fr/david
  • 3. no-conférence nous n'enseignons pas, nous échangeons nos expériences
  • 4. Qu'abordons-nous Par quoi commencer ? Comment structurer ? Quels formats ? Comment ajouter une nouvelle version ? Que faire des erreurs ? Comment sécuriser ? Comment gérer les spams et les abus ? Comment paginer ? Hypermédia et découverte, késaco ? Quelles autres bonnes pratiques ?
  • 6. API First D'abord mener la réflexion sur les données et sur comment elles seront utilisées Penser l'API en prenant la place de l'utilisateur Et si vous deveniez votre propre utilisateur ? Éventuellement en commençant par le mobile ou y brancher des applicatifs indépendants
  • 7. Comment structurer ? Appel, URL, ressources, hiérarchies
  • 8. Structure REST, fuyez SOAP, évitez le "truc perso" Ne vous limitez pas aux verbes, utilisez HTTP Une ressource = un nom, en minuscules hiérarchies à plat, /ressource/ et /ressource/id profondeur limitée à /ressource/id/ressource vs. approche liée (hypermedia)
  • 9. Quel(s) format(s) JSON, ATOM, XML, (x)HTML, RDF, www-form-urlencoded, ...
  • 10. Format Requêtes : pensez au form-encoded Utilisez des formats standard ! Utilisez un format extensible pour plus tard Utilisez une extension de fichier dans l'URL Déclarez le format dans les entêtes Imposez le format, et le codage (UTF8 svp)
  • 12. Versionnement Restez compatible : même URI, ajout de paramètres optionnels, valeurs additionnelles Si besoin d'une nouvelle version : •  uniquement des versions majeures (v1, v2) •  /v2/* en racine du service •  rarement dans le chemin de la ressource vs. approche liée (hypermedia)
  • 14. Erreurs Utilisez les erreurs HTTP au minimum 2xx, 3xx, 4xx, 5xx Détail dans le corps du message respectant le format attendu Code + lien vers l'aide en ligne correspondante message : pour dev ou pour utilisateur final ? différenciez bien les deux
  • 16. Sécurité Utilisez ce que vous maîtrisez Toujours du SSL, toujours valider les certificats Auth HTTP basic fonctionne très bien Auth déléguée : OAuth 1, attention à OAuth 2 Évitez les cookies de session (CRSF) Demandez une clef d'api par applicatif
  • 18. SPAM et abus Throttling/métriques •  par IP •  par application (clef d'API) •  par utilisateur Coûteux en ressources, mais indispensable Quid d'imposer de toujours être authentifié ? Limiter la taille des résultats Timeout contre les requêtes longues
  • 20. Pagination Faire simple ? pas ici, pièges en vue Cas simple : sort + order + limit + offset Hypermedia : liens rel=next, rel=prev Quid des nouveaux items entre 2 requêtes ? exemple avec twitter : paramètre since, upto avec une date ou un id
  • 22. Hypermédia et découverte Envisager votre API comme votre site Web : navigable, standard, indexable, évolutif. Ne plus fournir des ids mais des liens Utiliser un format qui permette d'utiliser l'hypertext (pas JSON par exemple) Un point d'entrée unique devrait suffire
  • 24. Bonnes pratiques Soyez en relation avec vos utilisateurs Dates au format ISO, *avec* fuseaux horaires Utilisez des codes, pas des messages texte Hypermedia : documentez les types de liens Améliorer les performances a posteriori (préchargement des sous-ressources)
  • 25. Pas de questions Normalement c'est déjà fait :-) Quelques retours sur le format utilisé ?