SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
APPLICATION
PROGRAMMING
INTERFACES
COMPRENDRE, UTILISER
ET CRÉER
SOMMAIRE
• Carte d’identité d’une API
• Utilisation
• Consommateur
• Producteur
• Marché
• Catégories d’API
• Données véhiculées
• SOAP et REST
• Exemples
• Des idées qui émergent?
• Pour les curieux…
CARTE D’IDENTITÉ D’UNE API
• Quoi ? Ensemble de fonctions exposées par un programme tiers pour accéder à tout ou
partie de ses fonctionnalités
• Qui ? Par des développeurs pour des développeurs
• Comment ? N’importe quel langage de programmation !
• Une API ≡ plusieurs implémentations
• Par abus de langage, les API couramment utilisées et entendues comme telles sont des accès à des
web services
• Où et quand ? …
POURQUOI ?
POURQUOI ?
• “I choose a lazy person to do a hard job.
Because a lazy person will find an easy way to
do it.” ― Bill Gates
AVANT… MAINTENANT APRES?
???
S’adapter aux évolutions technologiques
Contrat tacite producteur-consommateur :
Qu’autorise-t-on à faire et comment ?
UTILISATION : CÔTÉ CONSOMMATEUR
PROS
• Utilisation de fonctionnalités même si expertise et/ou
ressources manquantes en interne
• Standardisation des API garantit des consensus
d’utilisation (ex. : standards HTTP, modèle REST, etc.)
→ grande communauté et possibilité d’entraide
• Mise en pratique rapide avant rachat ou recherche en
interne sur d’autres pistes
CONS
• Dépendance très forte au producteur → maintenance ±
accrue lors d’évolutions (modification des algorithmes,
dépréciation de fonctionnalités, voire cessation de
services)
• Problèmes de compatibilité entre API → boîte noire avec
les dépendances importées
UTILISATION :
CÔTÉ
PRODUCTEUR
• Industrialisation et monétisation des algorithmes et/ou des données
• Inclusion de nouveaux acteurs au sein de son marché (recrutement
des utilisateurs, intégration de nouveaux usages via feedbacks…)
• Maîtrise des données échangées : sécurisation des données plutôt que
d’un monolithe applicatif
• Pas de présupposé sur les technologies finales employées : support et
maintenance réduits aux fonctionnalités
• Implémentation respectueuse des standards (guidelines
préexistantes...) → Gain de temps lors des spécifications
• Découpage en micro-services : concentration sur cœur de
métier/fonctionnalité, même en interne
Catégories d’API
API de système d’exploitation API de langage de programmation
API d’infrastructure API ou service web
SPÉCIFICITÉS DES API POUR DEVICES « MOBILES »
• Prendre en compte les utilisateurs finaux! → ATAWAD
• Besoin d’instantané (AnyTime,AnyWhere)
• Multiplicité des interactions entre applications sur un ou entre appareil(s) (AnyDevice)
• Architecture client-serveur, les clients étant les appareils de X marques
• Optimisation des transmissions de données (requêtes, temps de traitement, etc.)
• Atomisation de l’information
• « Technology-agnostism »
MARCHÉ :
UNE EXPLOSION DU
TERME “API” EN
MARKETING
• Concentration sur un service fourni plutôt qu’un
produit – pas de dépendance matérielle!
• Réseaux facilement accessibles : mises à jour en temps
réel, possibilité de traitements asynchrones…
• Régulation des requêtes, meilleur management côté
serveur
• Business model ≡ licences et non produits
• Unités : nombre de données stockées, échangées,
nombre de requêtes effectuées, …
OPEN API != OPEN SOURCE !
Il existe une spécification sur ce que doit être une OpenAPI...
Une API incluant le mot « Open » permet de supposer
qu’elle respecte les contraintes de cette spécification.
+ Rarement un accès au code interne
+Très souvent limitées (restrictions via adresse IP, tokens, coût/nombre
par requêtes…)
DONNÉES
VÉHICULÉES
• Stateless : 2 états bien distincts, chacun géré par un côté
• État de l’application géré par le client
• État des ressources géré par le serveur
• Principes de la POO (Programmation Orientée-Objet)
• Communiquer via des objets
• Encapsulation des données
• Gestion de données : respecter les opérations CRUD
(Create, Read, Update, Delete)
• Sérialisation des données :
SOAP VERSUS REST
• Simple Object Access Protocol – Framework de protocoles
• Par Microsoft
• Verbeux, lisible et compréhensible par les « non-initiés » -- XML
• Nécessite de coder et maintenir des lecteurs et parseurs spécifiques → mise à jour client quand mise à
jour serveur
• REpresentational State Transfer – Style d’architecture
• Thèse de RoyThomas Fielding
• Ontologie et consensus sur l’écriture (verbes, statuts…)
• Les données peuvent changer rapidement → délégation d’une partie des fonctionnalités grâce à une
entente commune
POSER UNE QUESTION…
• Où se trouve la ressource ?
• Qu’est-ce qu’on va faire à cette ressource ?
• Qui je suis, pourquoi et comment je veux obtenir cette ressource ?
En quelle langue je parle, avec quel « alphabet » ?
• Des précisions sur ce qu’on va faire à la ressource
• URL
• Method
• Headers
• Body
URL
• Uniform Resource Locator
http:// sousdomaine.domaine.gigadomaine :8080 / dossier / sousdossier…
Protocole Chemin « absolu » sur le serveur
Port
Domaine et leurs divisions
UNE URL = UNE ressource (donnée, type de données, traitement…)
URLs = « endpoints »
MÉTHODES HTTP
• GET → Récupération d’une ressource
• PUT → Mise à jour/remplacement de ressources
MÉTHODES HTTP
• GET → Récupération d’une ressource
• PUT → Mise à jour/remplacement de ressources
• POST → Création d’une ressource
• DELETE → Suppression d’une ressource
MÉTHODES HTTP
• GET → Récupération d’une ressource
• PUT → Mise à jour/remplacement de ressources
• POST → Création d’une ressource
• DELETE → Suppression d’une ressource
• HEAD → Informations sur la ressource
• PATCH → Modifier une partie d’une ressource
• TRACE → Retourne ce qui a été reçu (debug)
• OPTIONS → Options de communication d’une ressource
… ET RECEVOIR UNE RÉPONSE
• Comment le serveur a réagi à la demande
• Dans quel langue, avec quels protocoles de communication la
ressource va être partagée
• Une mise en forme de ce qui a été demandé
• Status code
• Headers
• Body
ETATS DES RÉPONSES REÇUES (CODES HTTP)
• 1xx → Information
• 2xx → Requête réussie
• 3xx → Requête redirigée
• 4xx → Requête mal formulée (côté client)
• 5xx → Impossibilité de répondre à la requête (côté serveur)
HEADERS
Authorization → On a obtenu l’autorisation d’accéder aux ressources
Content-Type → Type du fichier demandé, et dans quel codage
Date → Quand est-ce que la requête a été faite ?
Expect → Qu’est-ce qu’on s’attend à avoir comme réponse ?
Host → Quel domaine (et sous-domaine…) a demandé la ressource ?
If-[condition] → Ce qu’on s’attend à avoir si certaines conditions
User-Agent → A partir de quel logiciel/navigateur essaie-t-on de récupérer la ressource ?
BODY
• Vide
• Texte « pur » (lisible sans traitement)
• Bits
• Fichiers multimédia
• Données ordonnées
• JSON
• XML
• HTML (directement interprété par le navigateur…)
MESURE DE QUALITÉ D’UNE API
• Expérience développeur : taille de la communauté, entraide, blogs, etc.
• Sécurité :
• Des données et traitements internes
• Des demandes des utilisateurs
• Bonne gestion des cas d’erreurs et codes HTTP pertinents
• Possibilité d’évolutions : features, données supplémentaires, optimisations…
EXEMPLES
Google et ses services
APIs proposées par Google
Mais également Google Cloud APIs
OPEN RATP
• Comprendre la documentation et analyser les services offerts
Open Data RATP
NOTRE API A NOUS DE JOUER
AVANT TOUT… Conseils et bonnes pratiques
• « Faites des dessins! »
• Penser à son public
• KISS (Keep It Simple, Stupid!)
• « Eating your own dog food »
• ATAWAD (AnyTime, AnyWhere, Any Device)
• Être pessimiste!
• « SISO » à éviter…
VOIR AUSSI POUR LES CURIEUX!
LEXICOGRAPHIE
• API :Application Programming Interface
• RPC : Remote Procedure Call
• SOAP : Simple Object Access Protocol
• WSDL :Web Service Document Language
• REST : REpresentational StateTransfer
• TTFAC :Time To First Api Call
• URL : Uniform Resource Locator
Pour aller plus loin…
• How to Create a REST Protocol
• Learn REST :A Tutorial
• SOAP vs REST differences
• Documenting APIs:A guide for technical writers
• Wikipedia forWebAPIs
• Public APIs for any use
NOTES ET
RÉFÉRENCES
• https://www.mediawiki.org/wiki/Web_APIs_hub

Weitere ähnliche Inhalte

Ähnlich wie Comprendre, utiliser et créer une API

Architecture de services web de type ressource
Architecture de services web de type ressourceArchitecture de services web de type ressource
Architecture de services web de type ressourceAntoine Pouch
 
Morning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide AcademyMorning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide AcademyOxalide
 
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
 
Plateforme opendata ouverte par In Cité Solution
Plateforme opendata ouverte par In Cité SolutionPlateforme opendata ouverte par In Cité Solution
Plateforme opendata ouverte par In Cité SolutionIn Cité Solution
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)Restlet
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent Biret
 
Accéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeAccéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeArnaud Auroux
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3Horacio Gonzalez
 
Architectures microservices
Architectures microservicesArchitectures microservices
Architectures microservicesRiadh MNASRI
 
Vincent biret azure functions et flow #AosCanadianTour (quebec)
Vincent biret azure functions et flow #AosCanadianTour (quebec)Vincent biret azure functions et flow #AosCanadianTour (quebec)
Vincent biret azure functions et flow #AosCanadianTour (quebec)Vincent Biret
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de phpGautier DUMAS
 
#SPSParis quoi de neuf avec le microsoft graph
#SPSParis quoi de neuf avec le microsoft graph#SPSParis quoi de neuf avec le microsoft graph
#SPSParis quoi de neuf avec le microsoft graphVincent Biret
 
U1 - Quoi de neuf avec le Microsoft Graph - Vincent Biret
U1 - Quoi de neuf avec le Microsoft Graph - Vincent BiretU1 - Quoi de neuf avec le Microsoft Graph - Vincent Biret
U1 - Quoi de neuf avec le Microsoft Graph - Vincent BiretSPS Paris
 

Ähnlich wie Comprendre, utiliser et créer une API (20)

Architecture de services web de type ressource
Architecture de services web de type ressourceArchitecture de services web de type ressource
Architecture de services web de type ressource
 
Morning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide AcademyMorning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide Academy
 
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...
 
Plateforme opendata ouverte par In Cité Solution
Plateforme opendata ouverte par In Cité SolutionPlateforme opendata ouverte par In Cité Solution
Plateforme opendata ouverte par In Cité Solution
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)
 
Accéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeAccéder aux données avec le windows runtime
Accéder aux données avec le windows runtime
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
 
Architectures microservices
Architectures microservicesArchitectures microservices
Architectures microservices
 
Présentation sharepoint 2013
Présentation sharepoint 2013Présentation sharepoint 2013
Présentation sharepoint 2013
 
Vincent biret azure functions et flow #AosCanadianTour (quebec)
Vincent biret azure functions et flow #AosCanadianTour (quebec)Vincent biret azure functions et flow #AosCanadianTour (quebec)
Vincent biret azure functions et flow #AosCanadianTour (quebec)
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de php
 
#SPSParis quoi de neuf avec le microsoft graph
#SPSParis quoi de neuf avec le microsoft graph#SPSParis quoi de neuf avec le microsoft graph
#SPSParis quoi de neuf avec le microsoft graph
 
U1 - Quoi de neuf avec le Microsoft Graph - Vincent Biret
U1 - Quoi de neuf avec le Microsoft Graph - Vincent BiretU1 - Quoi de neuf avec le Microsoft Graph - Vincent Biret
U1 - Quoi de neuf avec le Microsoft Graph - Vincent Biret
 

Kürzlich hochgeladen

SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 

Kürzlich hochgeladen (10)

SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 

Comprendre, utiliser et créer une API

  • 2. SOMMAIRE • Carte d’identité d’une API • Utilisation • Consommateur • Producteur • Marché • Catégories d’API • Données véhiculées • SOAP et REST • Exemples • Des idées qui émergent? • Pour les curieux…
  • 3. CARTE D’IDENTITÉ D’UNE API • Quoi ? Ensemble de fonctions exposées par un programme tiers pour accéder à tout ou partie de ses fonctionnalités • Qui ? Par des développeurs pour des développeurs • Comment ? N’importe quel langage de programmation ! • Une API ≡ plusieurs implémentations • Par abus de langage, les API couramment utilisées et entendues comme telles sont des accès à des web services • Où et quand ? …
  • 4.
  • 6. POURQUOI ? • “I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.” ― Bill Gates
  • 7. AVANT… MAINTENANT APRES? ??? S’adapter aux évolutions technologiques
  • 8. Contrat tacite producteur-consommateur : Qu’autorise-t-on à faire et comment ?
  • 9. UTILISATION : CÔTÉ CONSOMMATEUR PROS • Utilisation de fonctionnalités même si expertise et/ou ressources manquantes en interne • Standardisation des API garantit des consensus d’utilisation (ex. : standards HTTP, modèle REST, etc.) → grande communauté et possibilité d’entraide • Mise en pratique rapide avant rachat ou recherche en interne sur d’autres pistes CONS • Dépendance très forte au producteur → maintenance ± accrue lors d’évolutions (modification des algorithmes, dépréciation de fonctionnalités, voire cessation de services) • Problèmes de compatibilité entre API → boîte noire avec les dépendances importées
  • 10. UTILISATION : CÔTÉ PRODUCTEUR • Industrialisation et monétisation des algorithmes et/ou des données • Inclusion de nouveaux acteurs au sein de son marché (recrutement des utilisateurs, intégration de nouveaux usages via feedbacks…) • Maîtrise des données échangées : sécurisation des données plutôt que d’un monolithe applicatif • Pas de présupposé sur les technologies finales employées : support et maintenance réduits aux fonctionnalités • Implémentation respectueuse des standards (guidelines préexistantes...) → Gain de temps lors des spécifications • Découpage en micro-services : concentration sur cœur de métier/fonctionnalité, même en interne
  • 11. Catégories d’API API de système d’exploitation API de langage de programmation API d’infrastructure API ou service web
  • 12. SPÉCIFICITÉS DES API POUR DEVICES « MOBILES » • Prendre en compte les utilisateurs finaux! → ATAWAD • Besoin d’instantané (AnyTime,AnyWhere) • Multiplicité des interactions entre applications sur un ou entre appareil(s) (AnyDevice) • Architecture client-serveur, les clients étant les appareils de X marques • Optimisation des transmissions de données (requêtes, temps de traitement, etc.) • Atomisation de l’information • « Technology-agnostism »
  • 13. MARCHÉ : UNE EXPLOSION DU TERME “API” EN MARKETING • Concentration sur un service fourni plutôt qu’un produit – pas de dépendance matérielle! • Réseaux facilement accessibles : mises à jour en temps réel, possibilité de traitements asynchrones… • Régulation des requêtes, meilleur management côté serveur • Business model ≡ licences et non produits • Unités : nombre de données stockées, échangées, nombre de requêtes effectuées, …
  • 14. OPEN API != OPEN SOURCE ! Il existe une spécification sur ce que doit être une OpenAPI... Une API incluant le mot « Open » permet de supposer qu’elle respecte les contraintes de cette spécification. + Rarement un accès au code interne +Très souvent limitées (restrictions via adresse IP, tokens, coût/nombre par requêtes…)
  • 15. DONNÉES VÉHICULÉES • Stateless : 2 états bien distincts, chacun géré par un côté • État de l’application géré par le client • État des ressources géré par le serveur • Principes de la POO (Programmation Orientée-Objet) • Communiquer via des objets • Encapsulation des données • Gestion de données : respecter les opérations CRUD (Create, Read, Update, Delete) • Sérialisation des données :
  • 16. SOAP VERSUS REST • Simple Object Access Protocol – Framework de protocoles • Par Microsoft • Verbeux, lisible et compréhensible par les « non-initiés » -- XML • Nécessite de coder et maintenir des lecteurs et parseurs spécifiques → mise à jour client quand mise à jour serveur • REpresentational State Transfer – Style d’architecture • Thèse de RoyThomas Fielding • Ontologie et consensus sur l’écriture (verbes, statuts…) • Les données peuvent changer rapidement → délégation d’une partie des fonctionnalités grâce à une entente commune
  • 17. POSER UNE QUESTION… • Où se trouve la ressource ? • Qu’est-ce qu’on va faire à cette ressource ? • Qui je suis, pourquoi et comment je veux obtenir cette ressource ? En quelle langue je parle, avec quel « alphabet » ? • Des précisions sur ce qu’on va faire à la ressource • URL • Method • Headers • Body
  • 18. URL • Uniform Resource Locator http:// sousdomaine.domaine.gigadomaine :8080 / dossier / sousdossier… Protocole Chemin « absolu » sur le serveur Port Domaine et leurs divisions UNE URL = UNE ressource (donnée, type de données, traitement…) URLs = « endpoints »
  • 19. MÉTHODES HTTP • GET → Récupération d’une ressource • PUT → Mise à jour/remplacement de ressources
  • 20. MÉTHODES HTTP • GET → Récupération d’une ressource • PUT → Mise à jour/remplacement de ressources • POST → Création d’une ressource • DELETE → Suppression d’une ressource
  • 21. MÉTHODES HTTP • GET → Récupération d’une ressource • PUT → Mise à jour/remplacement de ressources • POST → Création d’une ressource • DELETE → Suppression d’une ressource • HEAD → Informations sur la ressource • PATCH → Modifier une partie d’une ressource • TRACE → Retourne ce qui a été reçu (debug) • OPTIONS → Options de communication d’une ressource
  • 22. … ET RECEVOIR UNE RÉPONSE • Comment le serveur a réagi à la demande • Dans quel langue, avec quels protocoles de communication la ressource va être partagée • Une mise en forme de ce qui a été demandé • Status code • Headers • Body
  • 23. ETATS DES RÉPONSES REÇUES (CODES HTTP) • 1xx → Information • 2xx → Requête réussie • 3xx → Requête redirigée • 4xx → Requête mal formulée (côté client) • 5xx → Impossibilité de répondre à la requête (côté serveur)
  • 24. HEADERS Authorization → On a obtenu l’autorisation d’accéder aux ressources Content-Type → Type du fichier demandé, et dans quel codage Date → Quand est-ce que la requête a été faite ? Expect → Qu’est-ce qu’on s’attend à avoir comme réponse ? Host → Quel domaine (et sous-domaine…) a demandé la ressource ? If-[condition] → Ce qu’on s’attend à avoir si certaines conditions User-Agent → A partir de quel logiciel/navigateur essaie-t-on de récupérer la ressource ?
  • 25. BODY • Vide • Texte « pur » (lisible sans traitement) • Bits • Fichiers multimédia • Données ordonnées • JSON • XML • HTML (directement interprété par le navigateur…)
  • 26. MESURE DE QUALITÉ D’UNE API • Expérience développeur : taille de la communauté, entraide, blogs, etc. • Sécurité : • Des données et traitements internes • Des demandes des utilisateurs • Bonne gestion des cas d’erreurs et codes HTTP pertinents • Possibilité d’évolutions : features, données supplémentaires, optimisations…
  • 28.
  • 29. Google et ses services APIs proposées par Google Mais également Google Cloud APIs
  • 30. OPEN RATP • Comprendre la documentation et analyser les services offerts Open Data RATP
  • 31. NOTRE API A NOUS DE JOUER
  • 32. AVANT TOUT… Conseils et bonnes pratiques • « Faites des dessins! » • Penser à son public • KISS (Keep It Simple, Stupid!) • « Eating your own dog food » • ATAWAD (AnyTime, AnyWhere, Any Device) • Être pessimiste! • « SISO » à éviter…
  • 33. VOIR AUSSI POUR LES CURIEUX!
  • 34. LEXICOGRAPHIE • API :Application Programming Interface • RPC : Remote Procedure Call • SOAP : Simple Object Access Protocol • WSDL :Web Service Document Language • REST : REpresentational StateTransfer • TTFAC :Time To First Api Call • URL : Uniform Resource Locator
  • 35. Pour aller plus loin… • How to Create a REST Protocol • Learn REST :A Tutorial • SOAP vs REST differences • Documenting APIs:A guide for technical writers • Wikipedia forWebAPIs • Public APIs for any use