REST - What's It All About? (SAP TechEd 2012, CD110)
-
Upload
sascha-wenninger -
Category
Technology
-
view
1.165 -
download
2
description
Transcript of REST - What's It All About? (SAP TechEd 2012, CD110)
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
Concepts Applica.ons in SAP-‐land Demo
Agenda
Concepts Applica.ons in SAP-‐land Demo
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/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
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!
Everything has a URL
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
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. 6 Presenta.on SSL 5 Session L2TP, PPTP 4 Transport TCP 3 Network IP 2 Data Link PPP, ARP 1 Physical IEEE 802.11
SOAP was designed to be transport-protocol agnostic
Many bindings for SOAP:
HTTP SMTP JMS
AMQP
Many bindings for SOAP:
HTTP SMTP JMS
AMQP
REST recognises this.
HTTP is an Applica.on Protocol.
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 commodity infrastructure!
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 how to behave
SOAP Doesn’t.
getAccountCustomerByInternalId
searchCustomerByBasicData updateSalesProspectStatusByPartnerSalesRepresentativeBasicData_sync
And everything works via HTTP POST (i.e. it uses HTTP as the dumb transport)
HTTP has Standard Responses
200 OK 302 Moved Permanently 404 Not Found 406 Method Not Allowed 409 Conflict 418 I’m a Teapot …
SOAP Doesn’t.
One last principle before we move on:
HATEOAS
One last principle before we move on:
Hypertext As The Engine Of Applica.on State
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
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!
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.
Concepts Applica.ons in SAP-‐land Demo
NetWeaver Gateway
RESTful OData API
Add-On to NetWeaver 7.0*
Current version: 2.0 SP05
Strategic for SAP
Devices Enterprise Software
Web
SRM SCM ERP
PLM CRM
SAP Business Suite
SAP NetWeaver Gateway
Social
*see Prerequisites and Deployment Op.ons
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
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)
2 Approaches to Development
Generation Tools
• Quickly expose BAPIs, RFCs and GUI screens
• Up & running in minutes!
OData Channel
• Complete Control • Build custom code adhering to
a structured framework with a library of helper classes
• Since SP04: SEGW
2 Approaches to Development
Generation Tools
• Quickly expose BAPIs, RFCs and GUI screens
• Up & running in minutes!
OData Channel
• Complete Control • Build custom code adhering to
a structured framework with a library of helper classes
• New tool SEGW since SP04
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
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
Custom Development
DJ Adams Started It All!
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
3 Resources
http://sapcrm:8000/api/businesspartner http://sapcrm:8000/api/bprelationship http://sapcrm:8000/api/opportunity plus any sub-resources we need
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!
Sidebar: Hyperlinks in JSON
Sidebar: Hyperlinks in JSON
No one standard to show hyperlinks à We chose the simplest option we found: “links”: {
“self”: “http://…”,
“up”: “http://…”,
“http://auspost.com.au/api/doc/rels/tracking”: “http://…”,
…
}
magic keyword rela.onship*
custom rela.onship link URL
*as per IANA standard
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 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!
About Me
Sascha Wenninger [email protected] @sufw
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
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 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/
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
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