Au cours des développements techniques d’une application mobile, l’attention première du porteur de projet est souvent focalisée sur la partie visible des développements à savoir l’interface utilisateur, parfois appelée “front mobile”. Mais la face cachée de votre application est tout aussi importante si ce n’est plus puisqu’elle conditionne le rendu et la performance de l’interface utilisateur. Nous vous proposons de découvrir une partie moins connue mais pourtant vitale de votre application, les API. À quoi cela correspond et comment les développeurs s’y prennent-ils pour permettre à votre application d’être performante ?
Une API c’est quoi ?
Le terme API signifie “Application Programming Interface”. Il s’agit d’une solution qui permet à des applications totalement distinctes de communiquer entre elles et d’échanger des données via une structure normalisée (un protocole). Les API peuvent prendre de multiples formes tant qu’elles répondent à cette finalité : une simple URL, un SDK à ajouter dans son code, un webservice Rest ou SOAP, un flux HL7, etc…
Par abus de langage toutefois, une API fait souvent référence à un webservice – élément indispensable à toute application puisqu’il rend disponible certaines données ou fonctionnalités à afficher sur une application tierce. Dans un contexte d’application mobile, on parlera par défaut de webservices Rest en évoquant une API (même si plusieurs alternatives existent).
Pour illustrer cette description, voici quelques exemples d’échanges de données permis par les API :
- Dans une application e-commerce : permettre aux utilisateurs mobiles et web de visualiser les mêmes données : stocks en temps réel, prix…
- Sur vos apps de réseaux sociaux favoris : permettre d’afficher vos commentaires et autres interactions en temps réel à la personne avec qui vous échanger
- Sur vos apps touristiques : afficher précisément les lieux demandés sur une carte dynamique
- Sur vos apps d’agenda : créer un RDV depuis votre mobile et retrouvez le sur votre application web
Schéma simplifié pour comprendre les interactions
Pourquoi optimiser vos API?
Finalement, une API est un point d’entrée vers votre serveur – qui contient les données métiers de votre application – depuis le monde extérieur, via internet. Il faut le voir comme la porte de service de votre entreprise, et de ce fait constitue un vecteur privilégié d’attaque informatique. Mais une API se doit également d’être performante pour ne pas impacter votre système d’information, ni les applications mobiles qui l’exploitent, et continuer de fournir un service de qualité à vos utilisateurs.
Sécurité et performance sont donc les maîtres mots qui doivent vous guider dans le développement de vos API.
Il existe de nombreux aspects à prendre en compte pour garantir un niveau de sécurité en cohérence avec les risques d’une attaque sur vos API. Mais le plus primordial est de limiter les données accessibles par ce biais au strict minimum nécessaire pour l’application mobile.
Lorsque l’API est pour une usage plus large, un système de clé peut être ajouté pour authentifier l’entité qui demande l’accès aux données proposées par l’API. Ces clés d’API offrent l’accès à tout ou une partie des données proposées par une application. Ainsi cette dernière est en mesure de contrôler et de sélectionner ce qu’elle autorise comme partage.
La performance de votre application, côté utilisateur, est en partie induite par la qualité des API utilisées. Bien que l’expérience utilisateur soit la résultante de nombreux facteurs (conception UX/UI, pertinence du périmètre fonctionnel…), si les API ne sont pas développées correctement, la performance en termes d’interactions de données en sera impactée. L’efficacité du processus d’échange est une nécessité pour une API.
Nos développeurs web spécialisés sur la partie “back” chez Beapp, vous proposent une liste de points d’attention à avoir sur les API lors de leur conception mais également de leur maintenance.
Découvrez nos bonnes pratiques pour des API optimisées :
1- (conception) Adapter le type et le format des API au besoin du projet
Pour une API destinée à de nombreux clients possibles, sans maîtrise de l’usage qui en sera fait, GraphQL sera privilégié. Si une approche webservice Rest reste préférable, le format JSON:API peut être une bonne alternative.
Dans le cas d’une API à destination d’une seule application mobile, privilégiez une approche Backend-For-Frontend (adapter et optimiser les endpoints à l’usage qui en sera fait), en webservice Restful JSON.
2- (conception) Prendre en compte la mobilité des utilisateurs pendant l’usage
Par définition, une application mobile sera soumise à de nombreuses instabilités de réseau (changement d’IP entre deux requêtes, absence de connexion internet pendant un laps de temps, …), sensible à la consommation du réseau (forfait 4G plus ou moins généreux), ou utilisée sur plusieurs appareils pour un même compte. Les cas de figure de mobilité d’un utilisateur sont nombreux et doivent être pris en compte lors de la conception d’une API.
Ne renvoyez donc que le strict nécessaire pour limiter le volume de données échangées. Vous pouvez également limiter le nombre d’appels réseaux nécessaires dans un parcours utilisateur type (ne pas seulement prendre en compte le vue par vue).
Ayez également toujours en tête par exemple d’intégrer les timezones dans les dates. Idéalement, prenez également en compte la langue de l’utilisateur qui peut changer.
3- (conception) Designer l’API pour permettre une gestion du cache côté mobile
Il est important d’anticiper la mise en cache des données qui peuvent l’être.
Vous pouvez scinder les API utilisées pour récupérer les informations froides (listing, fiche détail…) des informations chaudes (commentaires…) ou liées à l’utilisateur (mise en favoris…). Cela permet à l’application de facilement stocker les informations froides, et de mettre un indicateur à l’emplacement des données non chargées.
4- (conception) Intégrer les équipes back et front (mobile / web) dans les réflexions
En tant que “client” de l’API, les développeurs “front mobile/web” ont un regard qui sera utile et qui aidera les développeurs back à bien identifier leurs besoins et la manière dont l’API sera utilisée dans leur contexte.
5- (conception) Utiliser des standard de documentation (OpenAPI 3.x pour les API Rest, Graphql.org pour GraphQL)
Fiez-vous à des documentations officielles lorsque vous effectuez la spécification de vos API. Des documentations propres à chaque typologie existent.
6- (conception) Anticiper la rédaction de la documentation au plus tôt du cycle de vie du projet, avant même les développements back-end et mobile.
Chaque API doit avoir sa documentation qui lui est propre et qui servira de manuel d’information pour les développeurs l’utilisant. Cela leur permettra de bien comprendre comment elle fonctionne et la manière de l’intégrer efficacement.
7- (maintenance) Toujours garder une rétro-compatibilité sur plusieurs anciennes versions de l’API.
Les applications mobiles peuvent ne pas être mises à jour par les utilisateurs, soit par incompatibilité des smartphones soit par souhait. Contrairement à un usage web, certains utilisateurs continueront donc d’appeler vos anciennes API même après une mise à jour des applications sur les stores.
Il est donc primordial de versionner vos API en gardant une rétro-compatibilité le plus que possible et de garder un certain nombre de versions. A vous de décider à quel moment vous décidez de couper les plus anciennes versions de vos API.
8- (maintenance) Ne pas hésiter à faire vivre la documentation
Tout comme l’API en elle même, pensez à faire évoluer votre documentation au fil des évolutions apportées pour maintenir un niveau de compréhension des développeurs l’utilisant.
9- (maintenance) Bien versionner et horodater la documentation et penser à notifier toute l’équipe de tout changement effectué
Vous vous assurerez d’un niveau égal d’information et de connaissances de la part de toute votre équipe technique sur l’API développée.
Ce point est d’autant plus important si l’équipe mobile à déjà commencé les développements en amont des développements backend.
Comme le suggèrent donc nos experts techniques, une attention particulière doit être portée à vos API de manière continue et pas uniquement lors du développement du projet.
Une fois votre application mise en ligne sur les stores, des interventions et une supervision continue doivent avoir lieu pour maintenir les API à un niveau opérationnel performant sur la durée. De la qualité de vos API dépend en partie une expérience utilisateur optimisée pour des usages performants de votre application !
Cet article suscite une réaction ou des envies d’échanger plus en détail sur certains aspects techniques ? Nos équipes back chez Beapp se tiennent à votre disposition sur le sujet !