L'arrivée en force des APIs web ouvertes révolutionne notre façon de développer sur le Web, d'une façon encore plus importante que l'open source.
Nous expliquerons ce qu'est une API web, ferons un tour d'horizon des APIs les plus marquantes, des clés de leur succès et présenterons les principales solutions pour faciliter leur création, leur hébergement, leur gestion et leur utilisation.
Nous expliquerons plus en détail comment développer une API web RESTful en Java grâce à Restlet Framework, le premier projet open source pour le développement REST en Java qui sort sa version 2.1 accompagné du livre "Restlet in Action" publié par Manning.
Pour finir nous présenterons APISpark, une nouvelle plate-forme cloud tout-en-un pour les APIs web, basée sur Restet Framework.
1. De l’open source à l’open API
avec Restlet
par Jérôme LOUVEL
@jlouvel
1
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
2
3. Speaker
• Jérôme LOUVEL (@jlouvel, jlouvel@restlet.com, 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)
3
5. Explosion du nombre d’APIs web
Source: ProgrammableWeb
Source: ProgrammableWeb
5
6. Croissance des sites web
Source: NetCraft / Jacob Nielsen
Un parallèle qui laisse rêveur !
6
7. Prédominance de REST
Source: ProgrammableWeb
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
7
8. 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
9. 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
10. Impact de l’open source
2000 2005
1. Réduction des coûts (licences)
2. Ecosystème d’innovation (logiciel)
10
11. De l’open source à l’open API
2005 2010
1. Réduction des coûts (cloud computing)
2. Accès multicanal (mobilité, convergence)
11
12. Impact de l’open API
2015 2020
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)
12
13. Anatomie d’une API web
• Un contrat d’API web standard = Mise en concurrence facilitée
• Exemples de contrats : Atom/AtomPub, AWS S3, CDMI, etc.
13
17. Google Maps Image API
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
17
18. Amazon et les APIs web
• Authentification exotique
• Anti-pattern d’API RESTful
• Mais AWS reste une référence dans le cloud !
18
19. De nouveaux acteurs
• Backends as a Service
• Sécurisation • Annuaire
• Frameworks RESTful • Applis mobiles
• Analytics • Monétisation
• Génération de doc • SaaS & sites riches
• SDKs clients • Animation
• Frameworks NIO/HTTP • Open data
• Gestion communauté • Référencement
• Internet des Objets
• Oracle Jersey • StackMob • Apigee • ProgrammableWeb
• JBoss RESTEasy • Parse.com • Mashery • Mashape
• XINS, Swagger • Sencha.io • 3Scale • Alcatel Open API Platform
• Enunciate • Firebase • WebServius • The Easy API
• Restlet Framework • APISpark • APISpark • APISpark
19
30. Packages de l’API Restlet
Un cœur complet mais compact
org.restlet.data
org.restlet.representation
org.restlet.resource
org.restlet org.restlet.routing
org.restlet.security
org.restlet.service
org.restlet.util
30
35. Des styles de codage différents
Côté serveur
JAX-RS API 1.1 Restlet API 2.1
@POST @Post(“txt:json”)
@Path(“withdrawal") public Money withdraw(){
@Consumes("text/plain") String card = getAttribute(“card”);
@Produces("application/json") String pin = getQueryValue(“pin”);
public Money withdraw( String amount = getQueryValue(“amount”);
@PathParam("card") String card, return getMoney(card, pin, amount);
@QueryParam("pin") String pin, }
String amount){
return getMoney(card,
pin, amount);
}
35
36. Des styles de codage différents
Côté client
JAX-RS API 2.0 Restlet API 2.1
// Get instance of Client // Get instance of Client
Client client = ClientFactory.newClient(); ClientResource client = new
ClientResource(""http://.../atm/{cardId}/balance");
// Get account balance
String bal = // Get account balance
client.target("http://.../atm/{cardId}/balance") client.setAttribute("cardId", "112233");
.pathParam("cardId", "112233") client.setQueryValue("pin", "9876");
.queryParam("pin", "9876") client.accept(MediaType.TXT_PLAIN);
.request("text/plain").get(String.class); String bal = client.get(String.class);
36
37. Sortie version 2.1
2 ans de développement !
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)
37
38. Sortie version 2.1
Prévu en juin 2012
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 !
38
40. Version 2.2
Ecouter sa communauté !
• 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)
40
41. Version 2.2
Améliorations incrémentales
• 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 !
41
42. Version 3.0
Les grandes lignes
• 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
42
50. Roadmap
• Beta privée : fin avril 2012
• Beta publique : juin 2012
• Version 1.0 : octobre 2012
Inscrivez-vous !
http://apispark.com
50
51. Conclusion
Merci !
• 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
51