Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
REST – So What’s It All About?

    CD110 @ SAP TechEd 2012
           Las Vegas
About Me

Sascha Wenninger
Integration Guy: SOA, PI, etc.

Drawer of Diagrams, Writer of Emails

@sufw
Agenda


               Applica.ons	
  
Concepts	
                            Demo	
  
               in	
  SAP-­‐land	
  
Agenda


               Applica.ons	
  
Concepts	
                            Demo	
  
               in	
  SAP-­‐land	
  
REST
REpresentational
State
Transfer
What Does That Mean?
The Client communicates with the Server

  by modifying the state of Resources

       through Representations
It’s	
  the	
  Web	
  
           	
  
  (for	
  machines)	
  
REST	
  interfaces	
  manipulate	
  the	
  state	
  of	
  resources	
  
       “Process	
  as	
  a	
  state	
  machine/dat...
Representations?
The server can store its data in whatever way it likes

The client is unaware of this, and can store the ...
Everything has a URL
URLs because everyone understands them:
http://saperp.BlueT.com.au/customer/12345



URLs are cheap. Use lots of them!
htt...
Why the http:// URLs?
HTTP is an Application Protocol.


     REST recognises this.
But How is that Better than SOAP?
Remember the OSI Stack?

        Layer	
            Example	
  
7	
     Applica/on	
       DNS,	
  FTP,	
  HTTP,	
  etc.	
...
SOAP was designed
to be transport-protocol agnostic
Many bindings for SOAP:

        HTTP
        SMTP
         JMS
        AMQP
Many bindings for SOAP:

        HTTP
        SMTP
         JMS
        AMQP
HTTP	
  is	
  an	
  Applica.on	
  
           Protocol.	
  
REST recognises this.
SOAP knows nothing about it!
So What?




Well, there are benefits to knowing…
Reliable Communication
(as long as the client knows how to
   handle errors and retries)


Free* Caching!


*provided by c...
Easy Metadata exchange via HTTP Headers!

Accept
Content-Type
If-Modified-Since
Last-Modified
…and last but not least…



A Universally-Understood Protocol!
HTTP has Standard Verbs

   GET
   PUT
   POST
   DELETE
   HEAD
   OPTIONS
   PATCH
   TRACE
HTTP has Standard Verbs

Standard Meaning
à Constraints = scope for
  optimization

Widely Implemented
à Everybody knows...
SOAP Doesn’t.
getAccountCustomerByInternalId
searchCustomerByBasicData
updateSalesProspectStatusByPartnerSalesRepresentati...
HTTP has Standard Responses

      200   OK
      302   Moved Permanently
      404   Not Found
      406   Method Not All...
SOAP Doesn’t.
One last principle before we move on:



            HATEOAS	
  
One last principle before we move on:



           Hypertext	
  
           As	
  
           The	
  
           Engine	
...
An Example
Client requests Shopping Cart

Server sends HTML page with items and links
   Client’s move
Client clicks the “...
Notice Something?
The Client is responsible for moving forward in a process

The server guides the client forward
  (with ...
Notice Something?
The server doesn’t maintain session/application state.
  It does maintain resource state!

Every request...
Applica.ons	
  
Concepts	
                            Demo	
  
               in	
  SAP-­‐land	
  
NetWeaver Gateway
RESTful OData API
   Add-On to NetWeaver 7.0*
                                                           Web          Devi...
The Good Things
•  Exposes BAPIs, RFCs & custom ABAP classes via OData XML
   –  Specific connectors for BOL (GenIL), HANA...
New Since Last Year
•  JSON (finally! :-)
•  Batch operations
•  “Deltas”, aka conditional requests
•  “Model Composition”...
2 Approaches to Development

       Generation Tools                   OData Channel

•    Quickly expose BAPIs, RFCs   • ...
2 Approaches to Development

       Generation Tools                   OData Channel

•    Quickly expose BAPIs, RFCs   • ...
The Limitations
•  Only supports OData (both XML & JSON)
   –  no custom representations (other XML/JSON, PDF, etc.)

•  L...
More Info on Gateway at TechEd
 CD109    How the University of Mississippi Runs Better with NetWeaver Gateway

 CD160    N...
Custom Development
DJ Adams Started It All!
A Simple RESTful API for SAP CRM
•    BusinessPartners everywhere
•    BPs have roles (e.g. Customer, Contact Person, Empl...
3 Resources

http://sapcrm:8000/api/businesspartner

http://sapcrm:8000/api/bprelationship

http://sapcrm:8000/api/opportu...
Design Principles
JSON as the default format

Roles & Relationships via hyperlinks

Client must only know the ‘entry point...
Sidebar: Hyperlinks in JSON
Sidebar: Hyperlinks in JSON
  No one standard to show hyperlinks
  à We chose the simplest option we found:

magic	
  key...
ICF Configuration in SAP CRM




    Create	
  a	
  public	
  class	
  	
  
ICF Configuration in SAP CRM
Assign interface IF_HTTP_EXTENSION
Insert Code Here…
Demo
Summary
•  REST is an architectural style
   –  Apply web principles to A2A integration
   –  Promotes true loose coupling...
About Me


Sascha Wenninger
sascha@BlueT.com.au
@sufw
Get the Latest Version of this Talk!

                        http://slideshare.net/sufw



This	
  presenta.on	
  by	
  S...
Feedback

Please complete a session evaluation for this session


Session Code:   CD110
Resources & Further Reading
A free eBook on REST, by InfoQ: http://www.infoq.com/minibooks/emag-03-2010-rest

Other intere...
Resources & Further Reading
RESTful APIs from Scratch – Lessons Learnt (so far):
    http://scn.sap.com/community/technolo...
Attributions
Images by Geek & Poke (Oliver Widder):
      http://geekandpoke.typepad.com/.a/6a00d8341d3df553ef0133f3e30a99...
REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)
Upcoming SlideShare
Loading in …5
×

of

REST - What's It All About? (SAP TechEd 2012, CD110) Slide 1 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 2 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 3 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 4 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 5 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 6 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 7 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 8 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 9 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 10 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 11 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 12 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 13 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 14 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 15 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 16 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 17 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 18 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 19 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 20 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 21 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 22 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 23 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 24 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 25 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 26 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 27 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 28 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 29 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 30 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 31 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 32 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 33 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 34 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 35 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 36 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 37 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 38 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 39 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 40 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 41 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 42 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 43 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 44 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 45 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 46 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 47 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 48 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 49 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 50 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 51 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 52 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 53 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 54 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 55 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 56 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 57 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 58 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 59 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 60

YouTube videos are no longer supported on SlideShare

View original on YouTube

REST - What's It All About? (SAP TechEd 2012, CD110) Slide 62 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 63 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 64 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 65 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 66 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 67 REST - What's It All About? (SAP TechEd 2012, CD110) Slide 68
Upcoming SlideShare
¿Que es SAP PI? (Process Integration)
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

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

Download to read offline

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

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 Me Sascha Wenninger Integration 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. REpresentational State Transfer
  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 likes The client is unaware of this, and can store the same things differently Each party serialises its internal state into Representations This provides loose coupling!
  12. 12. Everything has a URL
  13. 13. URLs because everyone understands them: http://saperp.BlueT.com.au/customer/12345 URLs are cheap. Use lots of them! http://api.netflix.com/catalog/titles/movies/60021896 http://api.netflix.com/catalog/titles/movies/60021896/cast http://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 designed to 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! Accept Content-Type If-Modified-Since Last-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 Verbs Standard Meaning à Constraints = scope for optimization Widely Implemented à Everybody knows how to behave
  29. 29. SOAP Doesn’t. getAccountCustomerByInternalId searchCustomerByBasicData updateSalesProspectStatusByPartnerSalesRepresentativeBasicData_sync And 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 Example Client requests Shopping Cart Server sends HTML page with items and links Client’s move Client clicks the “Check Out” link Server sends HTML page with Total Amount Client’s move Client clicks the “Pay” link Server sends HTML page with “Thank You” message
  35. 35. Notice Something? The Client is responsible for moving forward in a process The 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 resource In 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 Gateway MOB107 Best Practices for Establishing and Running a Mobile Landscape MOB204 Building SAP Applications Using NetWeaver Gateway and HTML5 MOB205 From Start to Finish - Developing an iPad App Using NW Gateway PMC206 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 Opportunities Target consumer: Mobile app built with HTML5 + jQuery Mobile
  49. 49. 3 Resources http://sapcrm:8000/api/businesspartner http://sapcrm:8000/api/bprelationship http://sapcrm:8000/api/opportunity plus any sub-resources we need
  50. 50. Design Principles JSON as the default format Roles & Relationships via hyperlinks Client must only know the ‘entry point’ URL to its own BP All other client interaction driven by hyperlinks There 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 CRM Assign 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 Me Sascha Wenninger sascha@BlueT.com.au @sufw
  59. 59. Get the Latest Version of this Talk! http://slideshare.net/sufw This  presenta.on  by  Sascha  Wenninger  is  available  under  a  Crea.ve  Commons  A`ribu.on-­‐ShareAlike  3.0  license  
  60. 60. Feedback Please complete a session evaluation for this session Session Code: CD110
  61. 61. Resources & Further Reading A free eBook on REST, by InfoQ: http://www.infoq.com/minibooks/emag-03-2010-rest Other interesting blogs and articles on InfoQ: http://www.infoq.com/articles/RESTSOAFuture The 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.html DJ 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-icf Further 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-resources A Simple Intro to JSON: http://json.org CORS – Cross-Origin Resource Sharing, by the Mozilla Developer Network: http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
  62. 62. Resources & Further Reading RESTful 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-far The NetWeaver Gateway space on SCN: http://scn.sap.com/community/netweaver-gateway HTTP: 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. Attributions Images 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

Views

Total views

2,188

On Slideshare

0

From embeds

0

Number of embeds

11

Actions

Downloads

59

Shares

0

Comments

0

Likes

0

×