SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
De l’open source à l’open API
        avec Restlet
          par Jérôme LOUVEL
                @jlouvel




                                1
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
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
Partie 1/4

L’OPEN API, PLUS IMPORTANTE QUE L’OPEN SOURCE ?




                                                  4
Explosion du nombre d’APIs web




                              Source: ProgrammableWeb
    Source: ProgrammableWeb




                                                        5
Croissance des sites web




                Source: NetCraft / Jacob Nielsen




        Un parallèle qui laisse rêveur !



                                                   6
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
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
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
Impact de l’open source




    2000                                           2005

           1. Réduction des coûts (licences)
           2. Ecosystème d’innovation (logiciel)



                                                          10
De l’open source à l’open API




    2005                                                 2010

           1. Réduction des coûts (cloud computing)
           2. Accès multicanal (mobilité, convergence)



                                                                11
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
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
Partie 2/4

TOUR D’HORIZON D’APIS WEB ET D’ACTEURS CLÉS




                                              14
Twitter et les APIs web




                          15
Twilio, l’API web est le produit




                                   16
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
Amazon et les APIs web




     • Authentification exotique
     • Anti-pattern d’API RESTful
     • Mais AWS reste une référence dans le cloud !
                                                      18
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
Partie 3/4

RESTLET FRAMEWORK 2.1 & ROADMAP




                                  20
Restlet Framework 2.1
                 Framework pour exposer et consommer
                      des APIs web de style REST




                       Langage
                         Java




    OSGi         Servlet         Regular   Android   GAE      GWT
environments   containers         JVM      mobiles   PaaS   browsers




                                                                       21
Nombreuses références




     • Une communauté internationale
     • Environ 100 000 développeurs Restlet



                                              22
Architecture
Une API Java, un moteur et 37 extensions !




                                             23
Multi-protocole
  Centré sur HTTP




                    24
Multi-cloud
Augmentez la portabilité de vos APIs web




                                           25
Support de Google SDC
Accès sécurisé à l’intranet depuis le cloud public




                                                     26
Multi-distribution
Une forge logicielle sur mesure




                                  27
REST, un paradigme à part entière




                                    28
Compétition
Niveaux d’abstraction et paradigmes différents




                                                 29
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
Filtrage et routage
 Multi-thread et dynamique




                             31
Interfaces Java annotées
 Approche uniforme, client & serveur
                     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();
                     }




                                                              32
Service de conversion
Extensible, scoring, beans de représentation




                                               33
Restlet API vs JAX-RS API




                            34
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
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
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
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
Livre « Restlet in Action »
     Déjà disponible en MEAP




                               39
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
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
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
Version 3.0
De framework à plate-forme




                             43
Partie 4/4

APISPARK, PAAS TOUT-EN-UN POUR APIS WEB




                                          44
APISpark, l’offre
La plate-forme tout-en-un pour APIs web




                                          45
APISpark, l’offre
La plate-forme tout-en-un pour APIs web




                                          46
Annuaire d’APIs web




                      47
Création d’une API web




                         48
Statistiques et reporting




                            49
Roadmap
•   Beta privée : fin avril 2012

•   Beta publique : juin 2012

•   Version 1.0 : octobre 2012



Inscrivez-vous !
http://apispark.com

                                    50
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

Weitere ähnliche Inhalte

Ähnlich wie De l'open source à l'open API avec Restlet

Google End points pour vos applications Android par Didier Girard 3 avril 2013
Google End points pour vos applications Android par Didier Girard 3 avril 2013Google End points pour vos applications Android par Didier Girard 3 avril 2013
Google End points pour vos applications Android par Didier Girard 3 avril 2013
Paris Android User Group
 
CompatibleOne OSCi OW2 Workshop July 11
CompatibleOne  OSCi OW2 Workshop July 11CompatibleOne  OSCi OW2 Workshop July 11
CompatibleOne OSCi OW2 Workshop July 11
CompatibleOne
 
Les plateformes de développement des web services
Les plateformes de développement des web servicesLes plateformes de développement des web services
Les plateformes de développement des web services
oussemos
 
PowerPoint sur le Web 2.0
PowerPoint sur le Web 2.0PowerPoint sur le Web 2.0
PowerPoint sur le Web 2.0
guest4ca1b
 

Ähnlich wie De l'open source à l'open API avec Restlet (20)

Asp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futurAsp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futur
 
Web services SOAP et REST
Web services  SOAP et RESTWeb services  SOAP et REST
Web services SOAP et REST
 
vNext
vNextvNext
vNext
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)
 
Gestion des APIs avec Azure API Management - Samir AREZKI
Gestion des APIs avec Azure API Management - Samir AREZKIGestion des APIs avec Azure API Management - Samir AREZKI
Gestion des APIs avec Azure API Management - Samir AREZKI
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
Rubedo cms : php, zend, MongoDB, Elasticsearch
Rubedo cms : php, zend, MongoDB, ElasticsearchRubedo cms : php, zend, MongoDB, Elasticsearch
Rubedo cms : php, zend, MongoDB, Elasticsearch
 
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
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et Xamarin
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
La production cartographique pour les SIG version Web
La production cartographique pour les SIG version WebLa production cartographique pour les SIG version Web
La production cartographique pour les SIG version Web
 
Google End points pour vos applications Android par Didier Girard 3 avril 2013
Google End points pour vos applications Android par Didier Girard 3 avril 2013Google End points pour vos applications Android par Didier Girard 3 avril 2013
Google End points pour vos applications Android par Didier Girard 3 avril 2013
 
CompatibleOne OSCi OW2 Workshop July 11
CompatibleOne  OSCi OW2 Workshop July 11CompatibleOne  OSCi OW2 Workshop July 11
CompatibleOne OSCi OW2 Workshop July 11
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)
 
Les plateformes de développement des web services
Les plateformes de développement des web servicesLes plateformes de développement des web services
Les plateformes de développement des web services
 
PowerPoint sur le Web 2.0
PowerPoint sur le Web 2.0PowerPoint sur le Web 2.0
PowerPoint sur le Web 2.0
 

Mehr von Jerome Louvel

Mehr von Jerome Louvel (9)

DevOps D-Day - Streamline DevOps workflows with APIs
DevOps D-Day - Streamline DevOps workflows with APIsDevOps D-Day - Streamline DevOps workflows with APIs
DevOps D-Day - Streamline DevOps workflows with APIs
 
Restlet Framework NG
Restlet Framework NGRestlet Framework NG
Restlet Framework NG
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API Languages
 
API Strategy & Practice - API Discovery, Hubs and IDEs
API Strategy & Practice - API Discovery, Hubs and IDEsAPI Strategy & Practice - API Discovery, Hubs and IDEs
API Strategy & Practice - API Discovery, Hubs and IDEs
 
20140527 - APIcon SF - Workshop #2 - Document and manage Java-based web APIs
20140527 - APIcon SF - Workshop #2 - Document and manage Java-based web APIs20140527 - APIcon SF - Workshop #2 - Document and manage Java-based web APIs
20140527 - APIcon SF - Workshop #2 - Document and manage Java-based web APIs
 
Web APIs, the New Language Frontier
Web APIs, the New Language FrontierWeb APIs, the New Language Frontier
Web APIs, the New Language Frontier
 
Build, host and manage your custom API in less than an hour
Build, host and manage your custom API in less than an hourBuild, host and manage your custom API in less than an hour
Build, host and manage your custom API in less than an hour
 
APIdays San Francisco, 06/22/2013
APIdays San Francisco, 06/22/2013APIdays San Francisco, 06/22/2013
APIdays San Francisco, 06/22/2013
 
Restlet et le multi-plateforme
Restlet et le multi-plateformeRestlet et le multi-plateforme
Restlet et le multi-plateforme
 

De l'open source à l'open API avec Restlet

  • 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
  • 4. Partie 1/4 L’OPEN API, PLUS IMPORTANTE QUE L’OPEN SOURCE ? 4
  • 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
  • 14. Partie 2/4 TOUR D’HORIZON D’APIS WEB ET D’ACTEURS CLÉS 14
  • 15. Twitter et les APIs web 15
  • 16. Twilio, l’API web est le produit 16
  • 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
  • 20. Partie 3/4 RESTLET FRAMEWORK 2.1 & ROADMAP 20
  • 21. Restlet Framework 2.1 Framework pour exposer et consommer des APIs web de style REST Langage Java OSGi Servlet Regular Android GAE GWT environments containers JVM mobiles PaaS browsers 21
  • 22. Nombreuses références • Une communauté internationale • Environ 100 000 développeurs Restlet 22
  • 23. Architecture Une API Java, un moteur et 37 extensions ! 23
  • 24. Multi-protocole Centré sur HTTP 24
  • 26. Support de Google SDC Accès sécurisé à l’intranet depuis le cloud public 26
  • 28. REST, un paradigme à part entière 28
  • 29. Compétition Niveaux d’abstraction et paradigmes différents 29
  • 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
  • 31. Filtrage et routage Multi-thread et dynamique 31
  • 32. Interfaces Java annotées Approche uniforme, client & serveur 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(); } 32
  • 33. Service de conversion Extensible, scoring, beans de représentation 33
  • 34. Restlet API vs JAX-RS API 34
  • 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
  • 39. Livre « Restlet in Action » Déjà disponible en MEAP 39
  • 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
  • 43. Version 3.0 De framework à plate-forme 43
  • 44. Partie 4/4 APISPARK, PAAS TOUT-EN-UN POUR APIS WEB 44
  • 45. APISpark, l’offre La plate-forme tout-en-un pour APIs web 45
  • 46. APISpark, l’offre La plate-forme tout-en-un pour APIs web 46
  • 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