SlideShare a Scribd company logo
1 of 8
Download to read offline
API mobile
”Les best practices pour désigner une API orientée mobile first”
Problématique

mobile
• Puissance toujours inférieure que sur desktop
• Data limitée en usage et vitesse (2g et 3g fréquente)
• Une app mobile est contraignante par défaut
• Système de recyclage de vues dans les listes
• Temps de rafraîchissement des apps limité
• Réactivité des applications mobiles exigée par les
utilisateurs (durée de rafraichissement, blocage UI,
perte de batterie…)
Solution :

Api mobile first
Best practice n°1

Limiter l’overhead
• Enlever un maximum d’headers inutiles
• Ne pas systématiser l’envoi de json si ça grossit
la data (form-encode, querystring).
• Rétrécir les JSON aux maximum (ne pas choisir
des clés à rallonge, ne pas envoyer des
données inutiles car trop ce n’est pas mieux
que moins)
• Utilisation de Rest pour le routing
Best practice n°2

Reduire le nombre d’appel API
• Envoyer le max d’information dans un seul json (ie: {..."user": 1...} à
bannir) car cela implique plus qu’une requête pour un affichage et est
contraire à la règle d’or: 1 appel API par écran!
• Pour l’upload des images « logo, avatar » avec un JSON, privilégier le
Base64 pour l’image
{"avatar":"tgzh68545dqugeug257fsg","name":"name"}
• Pour l’upload de grosses images, 2 solutions en POST:
• multipart/form-data (http://stackoverflow.com/questions/4083702/
posting-a-file-and-associated-data-to-a-restful-webservice-
preferably-as-json)
• Base64 (mais risque de gros d’overhead : +33% taille - ne pas
privilégier si la taille de l’input n’est pas limité)
Best practice n°3
Bonne anatomie
• API Versionnée : pour être toujours rétro-
compatible avec les toutes les clients. Devrait
être un réflexe comme faire une branche Git
develop au début d’un projet.
• API flexible: si besoin le rajout ou la suppression
d’un champ dans la réponse se fait sans
douleurs ni rustines (pas de changement de la
structure de la réponse)
Best practice n°4
Privilégier la performance
• Pas d’intelligence sur mobile, pure consommateur
(même logique que pour un client navigateur).
• Protocole buffers > JSON sur mobile (crée par
Google, validation sur schema et deserialisation sans
parsing, taille minuscule) (http://
blog.codeclimate.com/blog/2014/06/05/choose-
protocol-buffers/)
• D’autres alternatives comme MessagePack, Thrift,
Avro (https://www.igvita.com/2011/08/01/protocol-
buffers-avro-thrift-messagepack/)
Best practice n°5
Documentation
• Documentation claire, à jour, testable dans les
conditions mobiles:
• Swagger (ou autre)
• Configuration Charles Proxy

More Related Content

Similar to Api mobile first

Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Comment passer d'un POC en prod @ plusieurs milliards de rêquetes
Comment passer d'un POC en prod @ plusieurs milliards de rêquetesComment passer d'un POC en prod @ plusieurs milliards de rêquetes
Comment passer d'un POC en prod @ plusieurs milliards de rêquetesCarles Sistare
 
Optimisations et Performances d'un POC en prod @ plusieurs milliards de requê...
Optimisations et Performances d'un POC en prod @ plusieurs milliards de requê...Optimisations et Performances d'un POC en prod @ plusieurs milliards de requê...
Optimisations et Performances d'un POC en prod @ plusieurs milliards de requê...David Caramelo
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)Fourat Zouari
 
20120402 nantes gtug - app engine
20120402   nantes gtug - app engine20120402   nantes gtug - app engine
20120402 nantes gtug - app engineGDG Nantes
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 
IBM FlashSystem : Les bonnes raisons de passer au Flash
IBM FlashSystem : Les bonnes raisons de passer au Flash IBM FlashSystem : Les bonnes raisons de passer au Flash
IBM FlashSystem : Les bonnes raisons de passer au Flash Solutions IT et Business
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réellesGeoffroy Arnoud
 
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...Peak Ace
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyribaOlivier BAZOUD
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPrestaShop
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01MongoDB
 
PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?Marc Bojoly
 
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18Vincent Biret
 
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...Modern Workplace Conference Paris
 
Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011jimmybourassa
 

Similar to Api mobile first (20)

Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Comment passer d'un POC en prod @ plusieurs milliards de rêquetes
Comment passer d'un POC en prod @ plusieurs milliards de rêquetesComment passer d'un POC en prod @ plusieurs milliards de rêquetes
Comment passer d'un POC en prod @ plusieurs milliards de rêquetes
 
Optimisations et Performances d'un POC en prod @ plusieurs milliards de requê...
Optimisations et Performances d'un POC en prod @ plusieurs milliards de requê...Optimisations et Performances d'un POC en prod @ plusieurs milliards de requê...
Optimisations et Performances d'un POC en prod @ plusieurs milliards de requê...
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)
 
20120402 nantes gtug - app engine
20120402   nantes gtug - app engine20120402   nantes gtug - app engine
20120402 nantes gtug - app engine
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
 
IBM FlashSystem : Les bonnes raisons de passer au Flash
IBM FlashSystem : Les bonnes raisons de passer au Flash IBM FlashSystem : Les bonnes raisons de passer au Flash
IBM FlashSystem : Les bonnes raisons de passer au Flash
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réelles
 
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
 
PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?
 
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
 
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
 
Drupal & Mobilité
Drupal & MobilitéDrupal & Mobilité
Drupal & Mobilité
 
Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011
 

Api mobile first

  • 1. API mobile ”Les best practices pour désigner une API orientée mobile first”
  • 2. Problématique
 mobile • Puissance toujours inférieure que sur desktop • Data limitée en usage et vitesse (2g et 3g fréquente) • Une app mobile est contraignante par défaut • Système de recyclage de vues dans les listes • Temps de rafraîchissement des apps limité • Réactivité des applications mobiles exigée par les utilisateurs (durée de rafraichissement, blocage UI, perte de batterie…)
  • 4. Best practice n°1
 Limiter l’overhead • Enlever un maximum d’headers inutiles • Ne pas systématiser l’envoi de json si ça grossit la data (form-encode, querystring). • Rétrécir les JSON aux maximum (ne pas choisir des clés à rallonge, ne pas envoyer des données inutiles car trop ce n’est pas mieux que moins) • Utilisation de Rest pour le routing
  • 5. Best practice n°2
 Reduire le nombre d’appel API • Envoyer le max d’information dans un seul json (ie: {..."user": 1...} à bannir) car cela implique plus qu’une requête pour un affichage et est contraire à la règle d’or: 1 appel API par écran! • Pour l’upload des images « logo, avatar » avec un JSON, privilégier le Base64 pour l’image {"avatar":"tgzh68545dqugeug257fsg","name":"name"} • Pour l’upload de grosses images, 2 solutions en POST: • multipart/form-data (http://stackoverflow.com/questions/4083702/ posting-a-file-and-associated-data-to-a-restful-webservice- preferably-as-json) • Base64 (mais risque de gros d’overhead : +33% taille - ne pas privilégier si la taille de l’input n’est pas limité)
  • 6. Best practice n°3 Bonne anatomie • API Versionnée : pour être toujours rétro- compatible avec les toutes les clients. Devrait être un réflexe comme faire une branche Git develop au début d’un projet. • API flexible: si besoin le rajout ou la suppression d’un champ dans la réponse se fait sans douleurs ni rustines (pas de changement de la structure de la réponse)
  • 7. Best practice n°4 Privilégier la performance • Pas d’intelligence sur mobile, pure consommateur (même logique que pour un client navigateur). • Protocole buffers > JSON sur mobile (crée par Google, validation sur schema et deserialisation sans parsing, taille minuscule) (http:// blog.codeclimate.com/blog/2014/06/05/choose- protocol-buffers/) • D’autres alternatives comme MessagePack, Thrift, Avro (https://www.igvita.com/2011/08/01/protocol- buffers-avro-thrift-messagepack/)
  • 8. Best practice n°5 Documentation • Documentation claire, à jour, testable dans les conditions mobiles: • Swagger (ou autre) • Configuration Charles Proxy