errest the basics
play

ERRest: The Basics Pascal Robert MacTI.ca Our agenda What is REST - PowerPoint PPT Presentation

MONTREAL JUNE 30, JULY 1ST AND 2ND 2012 ERRest: The Basics Pascal Robert MacTI.ca Our agenda What is REST ? Basic ERRest concepts Our Model of the day Routes for basic operations REST ? REpresentational State Transfer


  1. MONTREAL JUNE 30, JULY 1ST AND 2ND 2012 ERRest: The Basics Pascal Robert MacTI.ca

  2. Our agenda • What is REST ? • Basic ERRest concepts • Our Model of the day • Routes for basic operations

  3. REST ? • REpresentational State Transfer • Architecture style, not a protocol or format

  4. REST and URLs • Goal: having consistent and logical URLs that have a meaning • GitHub is good example: • https://github.com/ projectwonder / wonder • https://github.com/projectwonder/wonder/ admin

  5. REST and HTTP protocol • Goal: to use as much as possible the HTTP protocol • Use HTTP verbs • Use headers • Use redirection • Read the spec (RFC 2616)!

  6. REST and stateless • Goal: to be stateless • Avoid storing stuff in sessions • Back button friendly :-) • More scalable (Ramsey will disagree)

  7. REST and representations • Goal: to deliver representations (JSON, XML, etc.) with the same URL • HTML view : https://github.com/projectwonder/wonder/commit/ 386d19e3080695d309e676d66db99e271c90dbab • Git patch view : https://github.com/projectwonder/wonder/ commit/386d19e3080695d309e676d66db99e271c90dbab. patch

  8. HTTP verbs • Goal: to use the many HTTP verbs • Use GET to get representation of data • Use POST on a collection to create new data • Use PUT to update data • Use DELETE to delete data • Can use the other verbs (OPTIONS, etc.) too

  9. HATEOAS • HATEOAS ( H ypermedia A s T he E ngine of A pplication S tate) is the "full" REST • Goal: doing the same as a browser (start page, follow links) • One endpoint, and links to other resources • Examples: Atom Publishing, CMIS, Google Docs APIs • Not currently supported by ERRest

  10. ERRest concepts

  11. Key concepts • Routes : the paths (URLs) to get/create/update/delete data • Controllers : based on a DirectAction class • Formats : the representations (JSON, XML, etc.) • Filters : which attributes are in and out

  12. Routes • You register them in the REST request handler (/ra) • Handler class is: ERXRouteRequestHandler • Can have bindings in them • /ra/posts/{title:String} • /ra/posts/{post:Post} • Can register default (CRUD) routes in one step

  13. Controllers • A controller is like a DirectAction class • A route is mapped to one method in a controller • Base classes: ERXRouteController and ERXDefaultRouteController

  14. Formats • Format is the representation • Many formats are supported (JSON, XML, plist, etc.) • You can add your own • Base class: ERXFormat

  15. Filters • Filtering is to specify what's in the object graph • Can have different filters per route and in/out • Useful to hide sensible information • You use ERXKeyFilter for filtering

  16. CRUD • Extends from controller from ERXDefaultRouteController • Register your routes with restRequestHandler.addDefaultRoutes(Entity.ENTITY_NAME)

  17. Let's create a REST service

  18. The Model • Example will be a blog system • Entities: • BlogEntry • Author • Category

  19. The Model

  20. Project Setup

  21. Adding basic routes

  22. Basic routes • Adding an author • Adding a category • Adding a blog post • Fetching a blog post • Updating a blog post • Deleting a blog post

  23. Basic routes setup and usage

  24. Query arguments

  25. ERXRestFetchSpecification • ERXRestFetchSpecification gives you automatic query arguments management • Built-in arguments: • sort=lastModified|desc,title|asc • batchSize=25&batch=1 • qualifier=title%3D'WOWODC' • Range=items%3D10-19

  26. Manual query arguments • Same as direct actions: request().stringFormValueForKey • A "login" action is such an example

  27. Query arguments demo

  28. Tomorrow • HTML routes • Alias, non-EO and fake primary keys • Handling status codes • Handling redirections • Handling headers

  29. MONTREAL JUNE 30, JULY 1ST AND 2ND 2012 Q&A

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend