De l'Open Source à l'Open API (in French)
-
Upload
restlet -
Category
Technology
-
view
399 -
download
1
description
Transcript of De l'Open Source à l'Open API (in French)
![Page 1: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/1.jpg)
1
De l’open source à l’open API avec Restlet
par Jérôme LOUVEL @jlouvel
![Page 2: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/2.jpg)
2
Abstract
• L’open API, plus importante que l’open source ?
• Tour d’horizon d’APIs web et des acteurs clés
• Restlet Framework 2.1 & Roadmap
• APISpark, PaaS tout-en-un pour APIs web
![Page 3: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/3.jpg)
3
Speaker • Jérôme LOUVEL (@jlouvel, [email protected], G+)
• Ingénieur PolyTech’Montpellier, 14 ans d’expérience
• Créateur de Restlet Framework, CEO de Restlet SAS
• Expert JAX-RS 1.0 (JSR-311)
• Contributeur à “RESTful Web Services” (O’Reilly)
• Co-auteur de “Restlet in Action” (Manning)
![Page 4: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/4.jpg)
L’OPEN API, PLUS IMPORTANTE QUE L’OPEN SOURCE ? Partie 1/4
4
![Page 5: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/5.jpg)
Explosion du nombre d’APIs web
5
Source: ProgrammableWeb Source: ProgrammableWeb
![Page 6: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/6.jpg)
Croissance des sites web
6
Source: NetCraft / Jacob Nielsen
Un parallèle qui laisse rêveur !
![Page 7: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/7.jpg)
Prédominance de REST
7
Source: ProgrammableWeb
• REST est souvent synonyme de non-SOAP… • L’hypermédia est rarement exploité… • AtomPub est plutôt la plus RESTful des APIs à ce jour • REST n’est pas indispensable au succès d’une API web • Exigence de qualité croissante : REST comme guide
Source: ProgrammableWeb
![Page 8: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/8.jpg)
L’open API, ça se consomme
• Enrichir un site web (mashups, flux blog/tweets, Google Maps)
• Import/Export SaaS (libérer ses données, changer de fournisseur)
• Intégration SaaS (notifier / web hooks, automatiser / workflow)
• APIs composites (combiner plusieurs APIs en une autre)
8
![Page 9: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/9.jpg)
L’open API permet d’exposer
• Backend Mobile (connectées, natives ou HTML 5)
• Backend SaaS (HTML 5/AJAX, API développeur/partenaire)
• Backend Open Data (multi-formats, API développeur, big data)
• Backend Internet des Objets (M2M, RFID, géolocalisation)
9
![Page 10: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/10.jpg)
Impact de l’open source
10
1. Réduction des coûts (licences) 2. Ecosystème d’innovation (logiciel)
2000 2005
![Page 11: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/11.jpg)
De l’open source à l’open API
11
1. Réduction des coûts (cloud computing) 2. Accès multicanal (mobilité, convergence)
2005 2010
![Page 12: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/12.jpg)
Impact de l’open API
12
1. Réduction des coûts (composition d’APIs web, open & privates, gain de temps) 2. Ecosystème d’innovation (places de marché d’APIs web, nouvelles chaînes de valeur)
2015 2020
![Page 13: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/13.jpg)
Anatomie d’une API web
13
• Un contrat d’API web standard = Mise en concurrence facilitée • Exemples de contrats : Atom/AtomPub, AWS S3, CDMI, etc.
![Page 14: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/14.jpg)
TOUR D’HORIZON D’APIS WEB ET D’ACTEURS CLÉS Partie 2/4
14
![Page 15: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/15.jpg)
Twitter et les APIs web
15
![Page 16: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/16.jpg)
Twilio, l’API web est le produit
16
![Page 17: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/17.jpg)
Google Maps Image API
17
http://maps.googleapis.com/maps/api/staticmap? center=Brooklyn+Bridge,New+York,NY& zoom=14& size=512x512& maptype=roadmap& markers=color:blue%7Clabel:S%7C40.702147,-74.015794& markers=color:green%7Clabel:G%7C40.711614,-74.012318& markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284& sensor=false
• Représentation « image/png » de la ressource de carte • Une ressource REST peut exposer des représentations binaires
![Page 18: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/18.jpg)
Amazon et les APIs web
18
• Authentification exotique • Anti-pattern d’API RESTful • Mais AWS reste une référence dans le cloud !
![Page 19: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/19.jpg)
De nouveaux acteurs
19
• Frameworks RESTful • Génération de doc • Frameworks NIO/HTTP
• Backends as a Service • Applis mobiles • SaaS & sites riches • Open data • Internet des Objets
• Sécurisation • Analytics • SDKs clients • Gestion communauté
• Annuaire • Monétisation • Animation • Référencement
• Oracle Jersey • JBoss RESTEasy • XINS, Swagger • Enunciate • Restlet Framework
• StackMob • Parse.com • Sencha.io • Firebase • APISpark
• Apigee • Mashery • 3Scale • WebServius • APISpark
• ProgrammableWeb • Mashape • Alcatel Open API Platform • The Easy API • APISpark
![Page 20: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/20.jpg)
RESTLET FRAMEWORK 2.1 & ROADMAP Partie 3/4
20
![Page 21: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/21.jpg)
Restlet Framework 2.1
21
Framework pour exposer et consommer des APIs web de style REST
OSGi environments
Servlet containers
Regular JVM
Android mobiles
GAE PaaS
GWT browsers
Langage Java
![Page 22: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/22.jpg)
Nombreuses références
22
• Une communauté internationale • Environ 100 000 développeurs Restlet
![Page 23: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/23.jpg)
Architecture Une API Java, un moteur et 37 extensions !
23
![Page 24: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/24.jpg)
Multi-protocole Centré sur HTTP
24
![Page 25: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/25.jpg)
Multi-cloud Augmentez la portabilité de vos APIs web
25
![Page 26: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/26.jpg)
Support de Google SDC Accès sécurisé à l’intranet depuis le cloud public
26
![Page 27: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/27.jpg)
Multi-distribution Une forge logicielle sur mesure
27
![Page 28: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/28.jpg)
REST, un paradigme à part entière
28
![Page 29: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/29.jpg)
Compétition Niveaux d’abstraction et paradigmes différents
29
![Page 30: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/30.jpg)
Packages de l’API Restlet Un cœur complet mais compact
30
org.restlet.data
org.restlet.representation
org.restlet
org.restlet.resource
org.restlet.routing
org.restlet.security
org.restlet.service
org.restlet.util
![Page 31: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/31.jpg)
Filtrage et routage Multi-thread et dynamique
31
![Page 32: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/32.jpg)
Interfaces Java annotées Approche uniforme, client & serveur
32
public interface RootResource { @Get("txt") public String represent(); } public interface AccountsResource { @Get("txt|json|xml") public String represent(); @Post("txt") public String add(String account); } public interface AccountResource { @Get("txt?depth={level}") public String represent(); @Put(“form:txt") public void store(String account); @Delete public void remove(); }
![Page 33: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/33.jpg)
Service de conversion Extensible, scoring, beans de représentation
33
![Page 34: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/34.jpg)
Restlet API vs JAX-RS API
34
![Page 35: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/35.jpg)
Des styles de codage différents Côté serveur
35
@POST @Path(“withdrawal") @Consumes("text/plain") @Produces("application/json") public Money withdraw( @PathParam("card") String card, @QueryParam("pin") String pin, String amount){ return getMoney(card, pin, amount); }
@Post(“txt:json”) public Money withdraw(){ String card = getAttribute(“card”); String pin = getQueryValue(“pin”); String amount = getQueryValue(“amount”); return getMoney(card, pin, amount); }
JAX-RS API 1.1 Restlet API 2.1
![Page 36: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/36.jpg)
Des styles de codage différents Côté client
36
// Get instance of Client Client client = ClientFactory.newClient(); // Get account balance String bal = client.target("http://.../atm/{cardId}/balance") .pathParam("cardId", "112233") .queryParam("pin", "9876") .request("text/plain").get(String.class);
// Get instance of Client ClientResource client = new ClientResource(""http://.../atm/{cardId}/balance"); // Get account balance client.setAttribute("cardId", "112233"); client.setQueryValue("pin", "9876"); client.accept(MediaType.TXT_PLAIN); String bal = client.get(String.class);
JAX-RS API 2.0 Restlet API 2.1
![Page 37: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/37.jpg)
Sortie version 2.1 2 ans de développement !
37
1) Améliorations incrémentales de l’API Restlet
• Sucre syntaxique (ClientResource#get/setQuery, get/setAttribute, etc.)
• Amélioration annotations. Example: @Get("form|xml:json?level=2")
• Traçage des requêtes individuel facilité
• ConnegService, DecoderService côté client
• Gestion côté client de l’absence de chunk encoding dans GAE
• Extension EMF (converter XMI/XML), HTML (multi-part upload)
2) Sécurité des APIs web renforcée
• Support des schémas AWS S3, AWS Query, Cookie et GAE
• Support de Google Secure Data Connector (SDC) hors GAE
• Nouvelles extensions OAuth 2.0 et OpenID 2.0 (draft specs)
![Page 38: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/38.jpg)
Sortie version 2.1 Prévu en juin 2012
38
3) Nouveau connecteur HTTP interne
• Design NIO non-bloquant, peu de threads
• Zéro dépendance, centré HTTP/Restlet, lecture représ. asynchrone
• Dépréciation des extensions Grizzly et Netty
• Documenté et extensible (extension SIP)
4) Option « Apache Public License 2.0 »
• En plus d’EPL 1.0, LGPL 2.1/3.0 et CDDL 1.0
• Licences commerciales possible si nécessaire
5) Migration vers GitHub
• Historique SVN avec branches importé
• Tickets Tigris.org importés
• Forge Restlet automatisée mise à jour
• Augmentation des contributions constatée !
![Page 39: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/39.jpg)
Livre « Restlet in Action » Déjà disponible en MEAP
39
![Page 40: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/40.jpg)
Version 2.2 Ecouter sa communauté !
40
• Migration vers Google Groups
• Listes de diffusion utilisateurs et développeurs encore sur Tigris.org
• Migration vers StackOverFlow
• Déjà largement utilisé pour les questions simples et bogues
• Augmenter la qualité des échanges dans le groupe sur Google en retour
• Migration vers Java SE 6
• Java SE 5 supporté depuis Restlet Framework 1.0 !
• Réduire la taille du code (ex: service pattern)
![Page 41: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/41.jpg)
Version 2.2 Améliorations incrémentales
41
• Nouvelles fonctionnalités • Optimiser la taille des éditions Android et GWT • CacheService : générique et extensible • Edition OSGi : gestion entièrement dynamique • Injection : Guice, Spring (amélioration)
• Portage en JavaScript natif
• Même niveau d’abstraction qu’en Java • Côté client (browser/XHR et Node.JS) • Côté serveur (Node.JS) • Prototype déjà disponible !
![Page 42: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/42.jpg)
Version 3.0 Les grandes lignes
42
• Site web : nouveau design et tutoriel • Restlet Studio : IDE basé sur Eclipse 4.0 • Restlet Apps : applications réutilisables (recherche, etc.) • Connecteur interne
• Unification runtime client et serveur • Pool de threads unique (via TaskService) • Support de SPDY [et/ou HTTP 2.0] (sur NIO)
• Nouveau convertisseur interne • Support multi-formats (XML, JSON, RDF, Form, CSV, etc.) • Support des hyperliens et des métadonnées HTTP • Remplaçant des extensions Jackson, XStream, etc.
• Nouveau portage : Google Dart • Support HTML 5 : Server-Sent Events, Cross-origin policies
![Page 43: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/43.jpg)
Version 3.0 De framework à plate-forme
43
![Page 44: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/44.jpg)
APISPARK, PAAS TOUT-EN-UN POUR APIS WEB
Partie 4/4
44
![Page 45: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/45.jpg)
APISpark, l’offre La plate-forme tout-en-un pour APIs web
45
![Page 46: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/46.jpg)
APISpark, l’offre La plate-forme tout-en-un pour APIs web
46
![Page 47: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/47.jpg)
Annuaire d’APIs web
47
![Page 48: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/48.jpg)
Création d’une API web
48
![Page 49: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/49.jpg)
Statistiques et reporting
49
![Page 50: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/50.jpg)
Roadmap
• Beta privée : fin avril 2012
• Beta publique : juin 2012
• Version 1.0 : octobre 2012
Inscrivez-vous ! http://apispark.com
50
![Page 51: De l'Open Source à l'Open API (in French)](https://reader035.fdocuments.us/reader035/viewer/2022062707/55823824d8b42a0d368b4b6e/html5/thumbnails/51.jpg)
Conclusion Merci !
51
• Apprendre REST & HTTP c’est un investissement sur le long terme
• Nombreuses opportunités autour des APIs web
• Restlet Framework : solution open source puissante et complète
• APISpark : solution en ligne tout-en-un et simple d’usage