REST - What's It All About? (SAP TechEd 2012, CD110)

1,684 views
1,551 views

Published on

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

No Downloads
Views
Total views
1,684
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
55
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

REST - What's It All About? (SAP TechEd 2012, CD110)

  1. 1. REST – So What’s It All About? CD110 @ SAP TechEd 2012 Las Vegas
  2. 2. About MeSascha WenningerIntegration Guy: SOA, PI, etc.Drawer of Diagrams, Writer of Emails@sufw
  3. 3. Agenda Applica.ons  Concepts   Demo   in  SAP-­‐land  
  4. 4. Agenda Applica.ons  Concepts   Demo   in  SAP-­‐land  
  5. 5. REST
  6. 6. REpresentationalStateTransfer
  7. 7. What Does That Mean?
  8. 8. The Client communicates with the Server by modifying the state of Resources through Representations
  9. 9. It’s  the  Web     (for  machines)  
  10. 10. REST  interfaces  manipulate  the  state  of  resources   “Process  as  a  state  machine/data  flow  diagram”   Resource-­‐oriented  decomposi.on  of  business  processes      SOA-­‐style  interfaces  perform  a  specific  task   “Process  as  a  flowchart/workflow”   Func.onal  decomposi.on  of  business  processes  
  11. 11. Representations?The server can store its data in whatever way it likesThe client is unaware of this, and can store the same things differentlyEach party serialises its internal state into RepresentationsThis provides loose coupling!
  12. 12. Everything has a URL
  13. 13. URLs because everyone understands them:http://saperp.BlueT.com.au/customer/12345URLs are cheap. Use lots of them!http://api.netflix.com/catalog/titles/movies/60021896http://api.netflix.com/catalog/titles/movies/60021896/casthttp://api.netflix.com/catalog/titles/movies/60021896/synopsis
  14. 14. Why the http:// URLs?
  15. 15. HTTP is an Application Protocol. REST recognises this.
  16. 16. But How is that Better than SOAP?
  17. 17. Remember the OSI Stack? Layer   Example  7   Applica/on   DNS,  FTP,  HTTP,  etc.  6   Presenta.on   SSL  5   Session   L2TP,  PPTP  4   Transport   TCP  3   Network   IP  2   Data  Link   PPP,  ARP  1   Physical   IEEE  802.11  
  18. 18. SOAP was designedto be transport-protocol agnostic
  19. 19. Many bindings for SOAP: HTTP SMTP JMS AMQP
  20. 20. Many bindings for SOAP: HTTP SMTP JMS AMQP
  21. 21. HTTP  is  an  Applica.on   Protocol.  REST recognises this.
  22. 22. SOAP knows nothing about it!
  23. 23. So What?Well, there are benefits to knowing…
  24. 24. Reliable Communication(as long as the client knows how to handle errors and retries)Free* Caching!*provided by commodity infrastructure!
  25. 25. Easy Metadata exchange via HTTP Headers!AcceptContent-TypeIf-Modified-SinceLast-Modified
  26. 26. …and last but not least…A Universally-Understood Protocol!
  27. 27. HTTP has Standard Verbs GET PUT POST DELETE HEAD OPTIONS PATCH TRACE
  28. 28. HTTP has Standard VerbsStandard Meaningà Constraints = scope for optimizationWidely Implementedà Everybody knows how to behave
  29. 29. SOAP Doesn’t.getAccountCustomerByInternalIdsearchCustomerByBasicDataupdateSalesProspectStatusByPartnerSalesRepresentativeBasicData_syncAnd everything works via HTTP POST(i.e. it uses HTTP as the dumb transport)
  30. 30. HTTP has Standard Responses 200 OK 302 Moved Permanently 404 Not Found 406 Method Not Allowed 409 Conflict 418 I’m a Teapot …
  31. 31. SOAP Doesn’t.
  32. 32. One last principle before we move on: HATEOAS  
  33. 33. One last principle before we move on: Hypertext   As   The   Engine   Of   Applica.on   State  
  34. 34. An ExampleClient requests Shopping CartServer sends HTML page with items and links Client’s moveClient clicks the “Check Out” linkServer sends HTML page with Total Amount Client’s moveClient clicks the “Pay” linkServer sends HTML page with “Thank You” message
  35. 35. Notice Something?The Client is responsible for moving forward in a processThe server guides the client forward (with ‘Check Out’, ‘Pay’ links)The client is responsible for completing the process If the client stops, the server doesn’t care!
  36. 36. Notice Something?The server doesn’t maintain session/application state. It does maintain resource state!Every request modifies the state of a resourceIn the example, the client causes the state of the “Shopping Cart” resource to be modified.
  37. 37. Applica.ons  Concepts   Demo   in  SAP-­‐land  
  38. 38. NetWeaver Gateway
  39. 39. RESTful OData API Add-On to NetWeaver 7.0* Web Devices Enterprise Social Software Current version: 2.0 SP05 Strategic for SAP SAP  NetWeaver  Gateway   SAP  Business  Suite   CRM SRM SCM PLM ERP*see  Prerequisites  and  Deployment  Op.ons  
  40. 40. The Good Things•  Exposes BAPIs, RFCs & custom ABAP classes via OData XML –  Specific connectors for BOL (GenIL), HANA, BW, BOR, Workflow, etc.•  Well integrated into SAP’s roadmap –  Tight integration with SUP 2.1+ –  Duet Enterprise uses Gateway internally•  Framework provides flexible security and auditing/logging•  Push notifications to consumers after subscription•  Expose data & functionality from older (pre-7.0) systems
  41. 41. New Since Last Year•  JSON (finally! :-)•  Batch operations•  “Deltas”, aka conditional requests•  “Model Composition”, aka Mash-ups•  New Service Builder (SEGW)•  Idempotency Support•  etc… (see What’s New)
  42. 42. 2 Approaches to Development Generation Tools OData Channel•  Quickly expose BAPIs, RFCs •  Complete Control and GUI screens •  Build custom code adhering to•  Up & running in minutes! a structured framework with a library of helper classes •  Since SP04: SEGW
  43. 43. 2 Approaches to Development Generation Tools OData Channel•  Quickly expose BAPIs, RFCs •  Complete Control and GUI screens •  Build custom code adhering to•  Up & running in minutes! a structured framework with a library of helper classes •  New tool SEGW since SP04
  44. 44. The Limitations•  Only supports OData (both XML & JSON) –  no custom representations (other XML/JSON, PDF, etc.)•  Limited support for complex input parameters•  Inherits the limitations of the backend services
  45. 45. More Info on Gateway at TechEd CD109 How the University of Mississippi Runs Better with NetWeaver Gateway CD160 NetWeaver Gateway Development for Beginners CD204 NetWeaver Gateway and OData in Detail CD267 Developing Applications with HTML5 Toolkit and NetWeaver GatewayMOB107 Best Practices for Establishing and Running a Mobile LandscapeMOB204 Building SAP Applications Using NetWeaver Gateway and HTML5MOB205 From Start to Finish - Developing an iPad App Using NW GatewayPMC206 NetWeaver PI and Gateway - When to Use What TEC107 NetWeaver Gateway Overview - Roadmap and Strategy
  46. 46. Custom Development
  47. 47. DJ Adams Started It All!
  48. 48. A Simple RESTful API for SAP CRM•  BusinessPartners everywhere•  BPs have roles (e.g. Customer, Contact Person, Employee…)•  BPs have relationships with other BPs•  Relationships have attributes•  Relationships lead to OpportunitiesTarget consumer: Mobile app built with HTML5 + jQuery Mobile
  49. 49. 3 Resourceshttp://sapcrm:8000/api/businesspartnerhttp://sapcrm:8000/api/bprelationshiphttp://sapcrm:8000/api/opportunityplus any sub-resources we need
  50. 50. Design PrinciplesJSON as the default formatRoles & Relationships via hyperlinksClient must only know the ‘entry point’ URL to its own BPAll other client interaction driven by hyperlinksThere is a great ABAP ßà JSON library on CodeExchange!
  51. 51. Sidebar: Hyperlinks in JSON
  52. 52. Sidebar: Hyperlinks in JSON No one standard to show hyperlinks à We chose the simplest option we found:magic  keyword   rela.onship*   “links”: { “self”: “http://…”, custom  rela.onship   link  URL   “up”: “http://…”, “http://auspost.com.au/api/doc/rels/tracking”: “http://…”, … } *as  per  IANA  standard  
  53. 53. ICF Configuration in SAP CRM Create  a  public  class    
  54. 54. ICF Configuration in SAP CRMAssign interface IF_HTTP_EXTENSION
  55. 55. Insert Code Here…
  56. 56. Demo
  57. 57. Summary•  REST is an architectural style –  Apply web principles to A2A integration –  Promotes true loose coupling via hyperlinks –  Based on Resources rather than functionality or tasks•  NetWeaver Gateway can expose SAP data & functionality in a RESTful way.•  More specific requirements can be met with Z code•  Most mobile frameworks rely on RESTful integration –  But the REST style is equally valid for A2A and non-mobile scenarios!
  58. 58. About MeSascha Wenningersascha@BlueT.com.au@sufw
  59. 59. Get the Latest Version of this Talk! http://slideshare.net/sufwThis  presenta.on  by  Sascha  Wenninger  is  available  under  a  Crea.ve  Commons  A`ribu.on-­‐ShareAlike  3.0  license  
  60. 60. FeedbackPlease complete a session evaluation for this sessionSession Code: CD110
  61. 61. Resources & Further ReadingA free eBook on REST, by InfoQ: http://www.infoq.com/minibooks/emag-03-2010-restOther interesting blogs and articles on InfoQ: http://www.infoq.com/articles/RESTSOAFutureThe Richardson Maturity Model, explained by Martin Fowler: http://martinfowler.com/articles/richardsonMaturityModel.html ...and by Leonard Richardson himself: http://www.crummy.com/writing/speaking/2008-QCon/act3.htmlDJ Adams’ original blog on REST on SCN: http://scn.sap.com/people/dj.adams/blog/2004/06/24/forget-soap--build-real-web-services-with-the-icfFurther blogs by DJ on implementing RESTful services via the ICF: http://scn.sap.com/people/dj.adams/blog/2009/09/21/a-new-rest-handler-dispatcher-for-the-icf http://scn.sap.com/people/dj.adams/blog/2010/01/07/representational-state-transfer-rest-and-sap http://scn.sap.com/people/dj.adams/blog/2009/09/30/rest-orientation-controlling-access-to-resourcesA Simple Intro to JSON: http://json.orgCORS – Cross-Origin Resource Sharing, by the Mozilla Developer Network: http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
  62. 62. Resources & Further ReadingRESTful APIs from Scratch – Lessons Learnt (so far): http://scn.sap.com/community/technology-innovation/blog/2012/06/03/restful-apis-from-scratch-lessons-learnt-so-farThe NetWeaver Gateway space on SCN: http://scn.sap.com/community/netweaver-gatewayHTTP: An Application-Level Protocol: http://dev.opera.com/articles/view/http-basic-introduction/HTTP: Let’s GET It On!: http://dev.opera.com/articles/view/http-lets-get-it-on/HTTP: Response Codes: http://dev.opera.com/articles/view/http-response-codes/Resources are not Objects: http://ruben.verborgh.org/blog/2012/09/27/the-object-resource-impedance-mismatch/ (a good read for OO programmers)Known Limitations of SAP NetWeaver Gateway: SAP Note 1574568
  63. 63. AttributionsImages by Geek & Poke (Oliver Widder): http://geekandpoke.typepad.com/.a/6a00d8341d3df553ef0133f3e30a99970b-pi http://geekandpoke.typepad.com/.a/6a00d8341d3df553ef0105362b2664970c-pi http://geekandpoke.typepad.com/.a/6a00d8341d3df553ef015390312d9f970b-pi‘Standards’ by xkcd (Randall Munroe): http://xkcd.com/927/‘Permanent State’ by Gaping Void (Hugh MacLeod): http://gapingvoid.com/2011/07/28/permanent-state/Many thanks to all for providing their work under a Creative Commons license! J

×