SlideShare une entreprise Scribd logo
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
Publicité

Contenu connexe

Similaire à Api mobile first (20)

Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
Oxalide
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
hkairi
 
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
Carles 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 engine
GDG Nantes
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
Devclic
 
Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
Abdelhakim Rhanizar
 
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 Drupal
Adyax
 
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
Geoffroy 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 - kyriba
Olivier BAZOUD
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
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
MongoDB
 
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
 
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 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
Vincent Biret
 
Drupal & Mobilité
Drupal & MobilitéDrupal & Mobilité
Drupal & Mobilité
Jean-Baptiste Guerraz
 
Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011
jimmybourassa
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
Oxalide
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
hkairi
 
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
Carles 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 engine
GDG Nantes
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
Devclic
 
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 Drupal
Adyax
 
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
Geoffroy 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 - kyriba
Olivier BAZOUD
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
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
MongoDB
 
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
 
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 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
Vincent Biret
 
Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011
jimmybourassa
 

Plus de Chris Saez (8)

Periphery: Clean your dead code on iOS once for all
Periphery: Clean your dead code on iOS once for allPeriphery: Clean your dead code on iOS once for all
Periphery: Clean your dead code on iOS once for all
Chris Saez
 
Add dynamic badges into your pull request and increase your productivity
Add dynamic badges into your pull request and increase your productivityAdd dynamic badges into your pull request and increase your productivity
Add dynamic badges into your pull request and increase your productivity
Chris Saez
 
Add badges to your pull request and increase your productivity
Add badges to your pull request and increase your productivityAdd badges to your pull request and increase your productivity
Add badges to your pull request and increase your productivity
Chris Saez
 
Pourquoi versionner ses githooks.pdf
Pourquoi versionner ses githooks.pdfPourquoi versionner ses githooks.pdf
Pourquoi versionner ses githooks.pdf
Chris Saez
 
Is it possible to write cross-native apps in 2020 ?
Is it possible to write cross-native apps in 2020 ?Is it possible to write cross-native apps in 2020 ?
Is it possible to write cross-native apps in 2020 ?
Chris Saez
 
Slidrs - google cloud anchors
Slidrs - google cloud anchorsSlidrs - google cloud anchors
Slidrs - google cloud anchors
Chris Saez
 
Ibeacon, une technologie à fort enjeux business
Ibeacon, une technologie à fort enjeux businessIbeacon, une technologie à fort enjeux business
Ibeacon, une technologie à fort enjeux business
Chris Saez
 
L’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & AndroidL’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & Android
Chris Saez
 
Periphery: Clean your dead code on iOS once for all
Periphery: Clean your dead code on iOS once for allPeriphery: Clean your dead code on iOS once for all
Periphery: Clean your dead code on iOS once for all
Chris Saez
 
Add dynamic badges into your pull request and increase your productivity
Add dynamic badges into your pull request and increase your productivityAdd dynamic badges into your pull request and increase your productivity
Add dynamic badges into your pull request and increase your productivity
Chris Saez
 
Add badges to your pull request and increase your productivity
Add badges to your pull request and increase your productivityAdd badges to your pull request and increase your productivity
Add badges to your pull request and increase your productivity
Chris Saez
 
Pourquoi versionner ses githooks.pdf
Pourquoi versionner ses githooks.pdfPourquoi versionner ses githooks.pdf
Pourquoi versionner ses githooks.pdf
Chris Saez
 
Is it possible to write cross-native apps in 2020 ?
Is it possible to write cross-native apps in 2020 ?Is it possible to write cross-native apps in 2020 ?
Is it possible to write cross-native apps in 2020 ?
Chris Saez
 
Slidrs - google cloud anchors
Slidrs - google cloud anchorsSlidrs - google cloud anchors
Slidrs - google cloud anchors
Chris Saez
 
Ibeacon, une technologie à fort enjeux business
Ibeacon, une technologie à fort enjeux businessIbeacon, une technologie à fort enjeux business
Ibeacon, une technologie à fort enjeux business
Chris Saez
 
L’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & AndroidL’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & Android
Chris Saez
 
Publicité

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