MONTREAL 1/3 JULY 2011ERRest: mais quest-ce que cest?Pascal RobertMacTI
REST??(non non, pas Rest In Peace)
REST?•   REST veut dire : Representational State Transfer (hein?)•   Cest un style darchitecture, ce nest pas un protocole...
Méthodes   Méthode HTTP                Action        GET             Obtenir (« fetch »)       POST             Créer (« c...
Exemples dURL•   GET /ra/membres.json•   GET /ra/membres/2.json•   POST /ra/membres.json•   PUT /ra/membres/2.json•   DELE...
Exemples de MAUVAIS URLs•   GET /ra/membres/2/delete.json•   POST /ra/membres/2.json
Actions supplémentaires•   On ajoute le nom de laction à la fin.•   Normalement, ce sont que des méthodes GET•   Exemples: ...
Méta-données•   On utilise les entêtes HTTP (y compris les cookies)•   Exemple:    Content-Language: fr-fr    X-Batch: 0-99
Paramètres•   Utilisation de paramètres pour filtrer une méthode GET? On    peut utiliser les paramètres de requêtes (« que...
WebObjects et REST
ERREST•   Canevas ajouté à Project Wonder en 2009.•   Basé sur le style de RoR.•   Formats disponibles sont Plist, Plist b...
Architecture de ERREST•   Offre un « request handler » unique.•   ERREST fonctionne avec des routes et des controlleurs.• ...
REST Request Handler•   Est un nouveau « request handler » (/ra)•   Gère les requêtes pour /ra/* et enregistre les routes....
Route•   Une « route » est lURI de la représentation de lobjet.•   Elle indique aussi quel controlleur utilisé•   ... et l...
Controlleurs•   Comme dans le modèle MVC.•   Est le lien entre les routes, lentité et les méthodes.•   Doivent hériter de ...
Controlleur de base•   ERXDefaultRouteController offre les méthodes de base pour les    opérations courantes (GET, POST, P...
Formats•   Format par défaut est XML•   Autres formats supportés: JSON, HTML, Plist, SproutCore, Rails•   Peut être modifié...
Key Filters•   Les « filtres par clés » sont la liste des attributs entrée/sortie.•   Utilisation de ERXKey et ERXKeyFilter...
Relations 1:N•   Ne sont pas ajoutés par défaut par    ERXKeyFilter.filterWithAttributesAndToOneRelationships()•   Il faut ...
Paramètres de requêtes•   Pour une requête GET, permet de filtrer la réponse    /ra/membres.json?batch=2&batchSize=20•   ER...
POJO•   Support POJO (bref, non-EO) est disponible dans ERRest.•   Vous devez créer un délégué qui hérite de    ERXAbstrac...
Alias•   On peut renommer des noms dentités ou dattributs.•   On utilise ERXRestNameRegistry.setExternalNameForInternalNam...
Authentification•   Plusieurs solutions:    •   Session (mais disponible que pour une seule instance)    •   Token    •   O...
Routage HTML•   Permet dutiliser des composantes WO si format demandé est    HTML.•   Utilise pour créer des petites appli...
Routage HTML•   Les composantes doivent implémenter IERXRouteComponent.•   Doit nommer les composantes « NomEntiteActionPa...
Exemple
Resources•   http://www.slideshare.net/wocommunity/errest•   http://www.slideshare.net/wocommunity/er-rest-designinggoodap...
Upcoming SlideShare
Loading in...5
×

Introduction à ERRest

1,201

Published on

Une présentati

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,201
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introduction à ERRest

  1. 1. MONTREAL 1/3 JULY 2011ERRest: mais quest-ce que cest?Pascal RobertMacTI
  2. 2. REST??(non non, pas Rest In Peace)
  3. 3. REST?• REST veut dire : Representational State Transfer (hein?)• Cest un style darchitecture, ce nest pas un protocole• Utilisation à fond la caisse du protocole HTTP• Le format peut être nimporte quoi (XML, JSON, Plist)• Comme une Direct Action, mais mieux structuré• Sans état (« stateless »)!
  4. 4. Méthodes Méthode HTTP Action GET Obtenir (« fetch ») POST Créer (« create ») PUT Mettre à jour (« update ») DELETE EffacerTRACE/OPTIONS/HEAD Méta-données
  5. 5. Exemples dURL• GET /ra/membres.json• GET /ra/membres/2.json• POST /ra/membres.json• PUT /ra/membres/2.json• DELETE /ra/membres/2.json
  6. 6. Exemples de MAUVAIS URLs• GET /ra/membres/2/delete.json• POST /ra/membres/2.json
  7. 7. Actions supplémentaires• On ajoute le nom de laction à la fin.• Normalement, ce sont que des méthodes GET• Exemples: • GET /ra/membres/2/autreListe.json • PUT /ra/membres/2/sousObjet.json
  8. 8. Méta-données• On utilise les entêtes HTTP (y compris les cookies)• Exemple: Content-Language: fr-fr X-Batch: 0-99
  9. 9. Paramètres• Utilisation de paramètres pour filtrer une méthode GET? On peut utiliser les paramètres de requêtes (« query arguments »).• Exemple: GET /ra/membres.json?batch=2&batchSize=20
  10. 10. WebObjects et REST
  11. 11. ERREST• Canevas ajouté à Project Wonder en 2009.• Basé sur le style de RoR.• Formats disponibles sont Plist, Plist binaire, JSON et XML.• Fait beaucoup de travail à notre place.
  12. 12. Architecture de ERREST• Offre un « request handler » unique.• ERREST fonctionne avec des routes et des controlleurs.• Basé sur les entités EO.
  13. 13. REST Request Handler• Est un nouveau « request handler » (/ra)• Gère les requêtes pour /ra/* et enregistre les routes.• Exemple tout simple: ERXRouteRequestHandler restRequestHandler = new ERXRouteRequestHandler(); restRequestHandler.addDefaultRoutes(Member.ENTITY_NAME); ERXRouteRequestHandler.register(restRequestHandler);
  14. 14. Route• Une « route » est lURI de la représentation de lobjet.• Elle indique aussi quel controlleur utilisé• ... et la méthode à appeler. new ERXRoute(Presentation.ENTITY_NAME,"/call-for-papers/{presentation:Presentation}/edit", PresentationsController.class, "updatePaper")
  15. 15. Controlleurs• Comme dans le modèle MVC.• Est le lien entre les routes, lentité et les méthodes.• Doivent hériter de ERXRouteController ou ses dérivés.
  16. 16. Controlleur de base• ERXDefaultRouteController offre les méthodes de base pour les opérations courantes (GET, POST, PUT, DELETE)• L’enregistrement des routes se fait avec un seul appel: ERXRouteRequestHandler.addDefaultRoutes(NomEntite)
  17. 17. Formats• Format par défaut est XML• Autres formats supportés: JSON, HTML, Plist, SproutCore, Rails• Peut être modifié par controlleur @Override protected ERXRestFormat defaultFormat() { return ERXRestFormat.json(); }
  18. 18. Key Filters• Les « filtres par clés » sont la liste des attributs entrée/sortie.• Utilisation de ERXKey et ERXKeyFilter.• Clés en sortie peuvent être différentes que celles en sortie.
  19. 19. Relations 1:N• Ne sont pas ajoutés par défaut par ERXKeyFilter.filterWithAttributesAndToOneRelationships()• Il faut utiliser withAllRecursive ou faire: ERXKeyFilter filtreDeRelation = ERXKeyFilter.filterWithAttributes(); ERXKeyFilter filtreDeSource = ERXKeyFilter.filterWithAttributes(); filtreDeSource.include(Source.RELATION, filtreDeRelation);
  20. 20. Paramètres de requêtes• Pour une requête GET, permet de filtrer la réponse /ra/membres.json?batch=2&batchSize=20• ERXFetchSpecification supporte les paramètres suivants: • batchSize • batch • sort • qualifier
  21. 21. POJO• Support POJO (bref, non-EO) est disponible dans ERRest.• Vous devez créer un délégué qui hérite de ERXAbstractRestDelegate.• Convention: si nom du délégué est <NomClass>RestDelegate.java, sera automatiquement enregistré.
  22. 22. Alias• On peut renommer des noms dentités ou dattributs.• On utilise ERXRestNameRegistry.setExternalNameForInternalName: • ERXRestNameRegistry.registry().setExternalNameForInternalName("Pet", "Animal");
  23. 23. Authentification• Plusieurs solutions: • Session (mais disponible que pour une seule instance) • Token • OpenID • Basic ou Digest • Cookies (pour clients HTML)
  24. 24. Routage HTML• Permet dutiliser des composantes WO si format demandé est HTML.• Utilise pour créer des petites applications « stateless ».• Plus nécessaire de créer un paquet de DirectActions.• Mêmes routes pour routage HTML que pour requêtes JSON/ XML/etc.
  25. 25. Routage HTML• Les composantes doivent implémenter IERXRouteComponent.• Doit nommer les composantes « NomEntiteActionPage ».• Exemples: • MonEntiteIndexPage • MonEntiteCreatePage • MonEntiteDestroyPage• Vous pouvez aussi retourner des pages avec pageWithName.
  26. 26. Exemple
  27. 27. Resources• http://www.slideshare.net/wocommunity/errest• http://www.slideshare.net/wocommunity/er-rest-designinggoodapi• http://www.slideshare.net/wocommunity/errest-and-dojo• http://www.wocommunity.org/podcasts/wowodc/2010/ERRest.mov• http://webobjects.mdimension.com/wonder/screencasts/ERRest-2010-02-16.mov• http://wiki.objectstyle.org/confluence/display/WONDER/ERRest+Framework• RESTful Web Services Cookbook (OReilly)• REST in Practice (OReilly)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×