SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
MONTREAL 1/3 JULY 2011




ERRest: mais qu'est-ce que c'est?
Pascal Robert
MacTI
REST??
(non non, pas Rest In Peace)
REST?
•   REST veut dire : Representational State Transfer (hein?)

•   C'est un style d'architecture, ce n'est pas un protocole

•   Utilisation à fond la caisse du protocole HTTP

•   Le format peut être n'importe quoi (XML, JSON, Plist)

•   Comme une Direct Action, mais mieux structuré

•   Sans état (« stateless »)!
Méthodes
   Méthode HTTP                Action
        GET             Obtenir (« fetch »)
       POST             Créer (« create »)
        PUT          Mettre à jour (« update »)
      DELETE                   Effacer
TRACE/OPTIONS/HEAD        Méta-données
Exemples d'URL

•   GET /ra/membres.json

•   GET /ra/membres/2.json

•   POST /ra/membres.json

•   PUT /ra/membres/2.json

•   DELETE /ra/membres/2.json
Exemples de MAUVAIS URLs


•   GET /ra/membres/2/delete.json

•   POST /ra/membres/2.json
Actions supplémentaires

•   On ajoute le nom de l'action à la fin.

•   Normalement, ce sont que des méthodes GET

•   Exemples:

    •   GET /ra/membres/2/autreListe.json

    •   PUT /ra/membres/2/sousObjet.json
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 (« query arguments »).

•   Exemple:
    GET /ra/membres.json?batch=2&batchSize=20
WebObjects et REST
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.
Architecture de ERREST


•   Offre un « request handler » unique.

•   ERREST fonctionne avec des routes et des controlleurs.

•   Basé sur les entités EO.
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);
Route

•   Une « route » est l'URI de la représentation de l'objet.

•   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")
Controlleurs


•   Comme dans le modèle MVC.

•   Est le lien entre les routes, l'entité et les méthodes.

•   Doivent hériter de ERXRouteController ou ses dérivés.
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)
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();
    }
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.
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);
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
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é.
Alias


•   On peut renommer des noms d'entités ou d'attributs.

•   On utilise ERXRestNameRegistry.setExternalNameForInternalName:
    •   ERXRestNameRegistry.registry().setExternalNameForInternalName("Pet", "Animal");
Authentification
•   Plusieurs solutions:

    •   Session (mais disponible que pour une seule instance)

    •   Token

    •   OpenID

    •   Basic ou Digest

    •   Cookies (pour clients HTML)
Routage HTML

•   Permet d'utiliser 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.
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.
Exemple
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)

Mais conteúdo relacionado

Mais procurados

Mais procurados (14)

Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
 
Cours php
Cours phpCours php
Cours php
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partie
 
Php1
Php1Php1
Php1
 
Jstl
JstlJstl
Jstl
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Audits php
Audits phpAudits php
Audits php
 
NIO 2
NIO 2NIO 2
NIO 2
 
Windows xp structure du registre
Windows xp   structure du registreWindows xp   structure du registre
Windows xp structure du registre
 
Php cours
Php coursPhp cours
Php cours
 

Destaque

Chaining the Beast - Testing Wonder Applications in the Real World
Chaining the Beast - Testing Wonder Applications in the Real WorldChaining the Beast - Testing Wonder Applications in the Real World
Chaining the Beast - Testing Wonder Applications in the Real WorldWO Community
 
Migrating existing Projects to Wonder
Migrating existing Projects to WonderMigrating existing Projects to Wonder
Migrating existing Projects to WonderWO Community
 
Deploying WO on Windows
Deploying WO on WindowsDeploying WO on Windows
Deploying WO on WindowsWO Community
 
D2W Stateful Controllers
D2W Stateful ControllersD2W Stateful Controllers
D2W Stateful ControllersWO Community
 
ERRest - The Next Steps
ERRest - The Next StepsERRest - The Next Steps
ERRest - The Next StepsWO Community
 

Destaque (10)

WOver
WOverWOver
WOver
 
Chaining the Beast - Testing Wonder Applications in the Real World
Chaining the Beast - Testing Wonder Applications in the Real WorldChaining the Beast - Testing Wonder Applications in the Real World
Chaining the Beast - Testing Wonder Applications in the Real World
 
Migrating existing Projects to Wonder
Migrating existing Projects to WonderMigrating existing Projects to Wonder
Migrating existing Projects to Wonder
 
Deploying WO on Windows
Deploying WO on WindowsDeploying WO on Windows
Deploying WO on Windows
 
D2W Stateful Controllers
D2W Stateful ControllersD2W Stateful Controllers
D2W Stateful Controllers
 
ERRest in Depth
ERRest in DepthERRest in Depth
ERRest in Depth
 
Life outside WO
Life outside WOLife outside WO
Life outside WO
 
ERRest - The Next Steps
ERRest - The Next StepsERRest - The Next Steps
ERRest - The Next Steps
 
ERRest
ERRestERRest
ERRest
 
KAAccessControl
KAAccessControlKAAccessControl
KAAccessControl
 

Semelhante a Introduction à ERRest

Support de formation : Yahoo! pipes les modules
Support de formation : Yahoo! pipes les modulesSupport de formation : Yahoo! pipes les modules
Support de formation : Yahoo! pipes les modulesErwan Tanguy
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5halleck45
 
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Yannick Chartois
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web5pidou
 
Presentation solr 10 Aout 2011 (french)
Presentation solr 10 Aout 2011 (french)Presentation solr 10 Aout 2011 (french)
Presentation solr 10 Aout 2011 (french)Thibaud Vibes
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdfRihabBENLAMINE
 
Loucif Redha développement d'applications web - php - my sql
Loucif Redha  développement d'applications web - php - my sqlLoucif Redha  développement d'applications web - php - my sql
Loucif Redha développement d'applications web - php - my sqlRedha LOUCIF
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Presentation article rest : How-to
Presentation article rest : How-toPresentation article rest : How-to
Presentation article rest : How-toDamien Cavaillès
 
Drupal 8, symfony
Drupal 8, symfonyDrupal 8, symfony
Drupal 8, symfonyjeUXdiCode
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfrachidimstapha
 

Semelhante a Introduction à ERRest (20)

Ns python web 1
Ns python web 1Ns python web 1
Ns python web 1
 
Services rest & jersey
Services rest & jerseyServices rest & jersey
Services rest & jersey
 
2
22
2
 
spring.pdf
spring.pdfspring.pdf
spring.pdf
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 
Drools et les moteurs de règles
Drools et les moteurs de règlesDrools et les moteurs de règles
Drools et les moteurs de règles
 
Drools
DroolsDrools
Drools
 
Support de formation : Yahoo! pipes les modules
Support de formation : Yahoo! pipes les modulesSupport de formation : Yahoo! pipes les modules
Support de formation : Yahoo! pipes les modules
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5
 
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web
 
Presentation solr 10 Aout 2011 (french)
Presentation solr 10 Aout 2011 (french)Presentation solr 10 Aout 2011 (french)
Presentation solr 10 Aout 2011 (french)
 
Présentation nouveauté java7
Présentation nouveauté java7Présentation nouveauté java7
Présentation nouveauté java7
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf
 
Loucif Redha développement d'applications web - php - my sql
Loucif Redha  développement d'applications web - php - my sqlLoucif Redha  développement d'applications web - php - my sql
Loucif Redha développement d'applications web - php - my sql
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Presentation article rest : How-to
Presentation article rest : How-toPresentation article rest : How-to
Presentation article rest : How-to
 
Cours php bac info
Cours php bac infoCours php bac info
Cours php bac info
 
Drupal 8, symfony
Drupal 8, symfonyDrupal 8, symfony
Drupal 8, symfony
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdf
 

Mais de WO Community

In memory OLAP engine
In memory OLAP engineIn memory OLAP engine
In memory OLAP engineWO Community
 
Using Nagios to monitor your WO systems
Using Nagios to monitor your WO systemsUsing Nagios to monitor your WO systems
Using Nagios to monitor your WO systemsWO Community
 
Build and deployment
Build and deploymentBuild and deployment
Build and deploymentWO Community
 
Reenabling SOAP using ERJaxWS
Reenabling SOAP using ERJaxWSReenabling SOAP using ERJaxWS
Reenabling SOAP using ERJaxWSWO Community
 
Unit Testing with WOUnit
Unit Testing with WOUnitUnit Testing with WOUnit
Unit Testing with WOUnitWO Community
 
Apache Cayenne for WO Devs
Apache Cayenne for WO DevsApache Cayenne for WO Devs
Apache Cayenne for WO DevsWO Community
 
Advanced Apache Cayenne
Advanced Apache CayenneAdvanced Apache Cayenne
Advanced Apache CayenneWO Community
 
iOS for ERREST - alternative version
iOS for ERREST - alternative versioniOS for ERREST - alternative version
iOS for ERREST - alternative versionWO Community
 
"Framework Principal" pattern
"Framework Principal" pattern"Framework Principal" pattern
"Framework Principal" patternWO Community
 
Filtering data with D2W
Filtering data with D2W Filtering data with D2W
Filtering data with D2W WO Community
 
Localizing your apps for multibyte languages
Localizing your apps for multibyte languagesLocalizing your apps for multibyte languages
Localizing your apps for multibyte languagesWO Community
 
D2W Branding Using jQuery ThemeRoller
D2W Branding Using jQuery ThemeRollerD2W Branding Using jQuery ThemeRoller
D2W Branding Using jQuery ThemeRollerWO Community
 
CMS / BLOG and SnoWOman
CMS / BLOG and SnoWOmanCMS / BLOG and SnoWOman
CMS / BLOG and SnoWOmanWO Community
 
Persistent Session Storage
Persistent Session StoragePersistent Session Storage
Persistent Session StorageWO Community
 

Mais de WO Community (20)

In memory OLAP engine
In memory OLAP engineIn memory OLAP engine
In memory OLAP engine
 
Using Nagios to monitor your WO systems
Using Nagios to monitor your WO systemsUsing Nagios to monitor your WO systems
Using Nagios to monitor your WO systems
 
Build and deployment
Build and deploymentBuild and deployment
Build and deployment
 
High availability
High availabilityHigh availability
High availability
 
Reenabling SOAP using ERJaxWS
Reenabling SOAP using ERJaxWSReenabling SOAP using ERJaxWS
Reenabling SOAP using ERJaxWS
 
Unit Testing with WOUnit
Unit Testing with WOUnitUnit Testing with WOUnit
Unit Testing with WOUnit
 
Apache Cayenne for WO Devs
Apache Cayenne for WO DevsApache Cayenne for WO Devs
Apache Cayenne for WO Devs
 
Advanced Apache Cayenne
Advanced Apache CayenneAdvanced Apache Cayenne
Advanced Apache Cayenne
 
iOS for ERREST - alternative version
iOS for ERREST - alternative versioniOS for ERREST - alternative version
iOS for ERREST - alternative version
 
iOS for ERREST
iOS for ERRESTiOS for ERREST
iOS for ERREST
 
"Framework Principal" pattern
"Framework Principal" pattern"Framework Principal" pattern
"Framework Principal" pattern
 
Filtering data with D2W
Filtering data with D2W Filtering data with D2W
Filtering data with D2W
 
Localizing your apps for multibyte languages
Localizing your apps for multibyte languagesLocalizing your apps for multibyte languages
Localizing your apps for multibyte languages
 
WOdka
WOdkaWOdka
WOdka
 
ERGroupware
ERGroupwareERGroupware
ERGroupware
 
D2W Branding Using jQuery ThemeRoller
D2W Branding Using jQuery ThemeRollerD2W Branding Using jQuery ThemeRoller
D2W Branding Using jQuery ThemeRoller
 
CMS / BLOG and SnoWOman
CMS / BLOG and SnoWOmanCMS / BLOG and SnoWOman
CMS / BLOG and SnoWOman
 
Using GIT
Using GITUsing GIT
Using GIT
 
Persistent Session Storage
Persistent Session StoragePersistent Session Storage
Persistent Session Storage
 
Back2 future
Back2 futureBack2 future
Back2 future
 

Introduction à ERRest

  • 1. MONTREAL 1/3 JULY 2011 ERRest: mais qu'est-ce que c'est? Pascal Robert MacTI
  • 2. REST?? (non non, pas Rest In Peace)
  • 3. REST? • REST veut dire : Representational State Transfer (hein?) • C'est un style d'architecture, ce n'est pas un protocole • Utilisation à fond la caisse du protocole HTTP • Le format peut être n'importe quoi (XML, JSON, Plist) • Comme une Direct Action, mais mieux structuré • Sans état (« stateless »)!
  • 4. Méthodes Méthode HTTP Action GET Obtenir (« fetch ») POST Créer (« create ») PUT Mettre à jour (« update ») DELETE Effacer TRACE/OPTIONS/HEAD Méta-données
  • 5. Exemples d'URL • GET /ra/membres.json • GET /ra/membres/2.json • POST /ra/membres.json • PUT /ra/membres/2.json • DELETE /ra/membres/2.json
  • 6. Exemples de MAUVAIS URLs • GET /ra/membres/2/delete.json • POST /ra/membres/2.json
  • 7. Actions supplémentaires • On ajoute le nom de l'action à la fin. • Normalement, ce sont que des méthodes GET • Exemples: • GET /ra/membres/2/autreListe.json • PUT /ra/membres/2/sousObjet.json
  • 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. 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
  • 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. Architecture de ERREST • Offre un « request handler » unique. • ERREST fonctionne avec des routes et des controlleurs. • Basé sur les entités EO.
  • 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. Route • Une « route » est l'URI de la représentation de l'objet. • 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. Controlleurs • Comme dans le modèle MVC. • Est le lien entre les routes, l'entité et les méthodes. • Doivent hériter de ERXRouteController ou ses dérivés.
  • 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. 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. 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. 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. 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. 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. Alias • On peut renommer des noms d'entités ou d'attributs. • On utilise ERXRestNameRegistry.setExternalNameForInternalName: • ERXRestNameRegistry.registry().setExternalNameForInternalName("Pet", "Animal");
  • 23. Authentification • Plusieurs solutions: • Session (mais disponible que pour une seule instance) • Token • OpenID • Basic ou Digest • Cookies (pour clients HTML)
  • 24. Routage HTML • Permet d'utiliser 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. 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.
  • 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)