Your SlideShare is downloading. ×
ReST-ful Resource Management
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

ReST-ful Resource Management

3,166

Published on

This presentation was given on 11/30/2009 at the North Idaho .NET User Group meeting in Sandpoint, Idaho by Joe Davis.

This presentation was given on 11/30/2009 at the North Idaho .NET User Group meeting in Sandpoint, Idaho by Joe Davis.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,166
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
37
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ReST-ful .NET Data Services Presented By: Joe Davis http://stygma.com Twitter: @stygz Facebook: http://www.facebook.com/joe.davis
  • 2. HTTP Request Structure
    • Method URI Protocol
    • Header1: Value1
    • Header2: Value2
    • <empty line>
    • Body
  • 3. HTTP GET Request
    • GET http://www.sample.com/page.aspx?myname=Joe+Davis HTTP/1.1
    • Host: www.sample.com
    • User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)
  • 4. HTTP POST Request
    • POST http://www.sample.com/page.html HTTP/1.1
    • Host: www.sample.com
    • User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)
    • myname=Joe+Davis
  • 5. HTTP Response
    • HTTP/1.1 200 OK
    • Content-Type: text/html
    • Content-length: 95
    • <html>
    • <head>
    • <title>Sample HTML Document</title>
    • </head>
    • <body>
    • Hello, Nurse!
    • </body>
    • </html>
  • 6. Quick Web Proxy Demo
    • WebScarab
  • 7. Semantics Structure (HTML) Presentation (Style) Behavior (Script) Perform Action Supply Context Specify Resource
  • 8. The Web IS ReST
    • URI = Uniform RESOURCE Identifier
    • The HTML document is a “Representation” of a resource in its current “State”
    • Resource representations can exist in any combination of any digital format (HTML, XML, JSON, RDF, RSS, ??)
  • 9. Identify the Resource
    • <PROTOCOL>://<HOST><PATH>?<QUERYSTRING>
    • http://www.sample.com/default.html
    • http://www.sample.com/category/widgets.html
    • <link rel=“alternate” type=“application/atom+xml” href=“http://www.sample.com/category/widgets.atom” >
    • http://www.sample.com/product/Super-Widget.html
    • <link rel=“alternate” type=“application/json” href=“http://www.sample.com/product/Super-Widget.json” >
  • 10. HTTP Methods Deletes resource DELETE Create or Update resource (returns current state after update) PUT Create resource (returns current state after creation—handy if server-generated resource ID is required) POST Retrieve resource HEADERS ONLY HEAD Retrieve resource headers and body GET
  • 11. ReST GET Request/Response
    • GET http://www.mystore.com/product/Super-Widget.json HTTP/1.1
    • HOST: www.mystore.com
    HTTP/1.1 200 OK Content-Type: application/json Content-Length: 53 {“ProductID”:123,”Name”:”Super Widget”,”Price”:49.99}
  • 12. ReST POST Request/Response
    • POST http://www.mystore.com/product/Ultra-Widget.json HTTP/1.1
    • HOST: www.mystore.com
    • Content-Type: application/json
    • Content-Length: 53
    • {”Name”:”Ultra Wigdet”,”Price”:59.99}
    HTTP/1.1 201 CREATED Content-Type: application/json Content-Length: 53 {“ProductID”:456,”Name”:”Ultra Wigdet”,”Price”:59.99}
  • 13. ReST PUT Request/Response
    • PUT http://www.mystore.com/product/Ultra-Widget.json HTTP/1.1
    • HOST: www.mystore.com
    • Content-Type: application/json
    • Content-Length: 53
    • {“ProductID”:456,”Name”:”Ultra Widget”,”Price”:59.99}
    HTTP/1.1 202 ACCEPTED Content-Type: application/json Content-Length: 53 {“ProductID”:456,”Name”:”Ultra Widget”,”Price”:59.99}
  • 14. HTTP Success Status Codes Partial Content 206 No Content 204 Accepted 202 Created 201 OK 200
  • 15. HTTP Redirection Status Codes Found (Temporary Redirection) 302 Moved Permanently 301 Multiple Choices 300
  • 16. HTTP Error Status Codes Request entity too large 413 Conflict 409 Request timeout 408 Method not allowed 405 Resource not found 404 Forbidden 403 Unsupported media type 415 Unauthorized 401 Bad Request 400
  • 17. HTTP Server Error Status Codes HTTP version not supported 505 Service Unavailable 503 Not Implemented 501 Internal Server Error 500
  • 18. Isn’t this SOAP?
    • No.
  • 19. SOAP vs. ReST
    • GET http://my.sample.com/stock/MSFT.json HTTP/1.1
    • HOST: my.sample.com
    POST http://my.sample.com/stock HTTP/1.1 HOST: my.sample.com Content-Type: application/soap+xml Content-Length: 308 <?xml version=&quot;1.0&quot;?> <soap:Envelope xmlns:soap=“http://www.w3.org/2001/12/soap-envelope” soap:encodingStyle=&quot;http://www.w3.org/2001/12/soap-encoding&quot;> <soap:Body xmlns:m=&quot;http://my.sample.com/stock&quot;>   <m:GetStock>     <m:StockName>MSFT</m:StockName>   </m:GetStock> </soap:Body> </soap:Envelope>
  • 20. So what’s RDF?
    • Resource Description Framework
    • Doesn’t require fore-knowledge of type
    • Applies common ontology
    • High discoverability
    • Great framework. Terrible metaphor.
      • Subject/Predicate/Object ??
      • Entity/Attribute/Value !!
    • .NET 4.0 supports tuples and dynamic types
  • 21. Sample RDF Request/Response
    • GET http://my.sample.com/product#Super-Widget HTTP/1.1
    • HOST: my.sample.com
    HTTP/1.1 200 OK Content-Type: text/rdf Content-Length: 389 <?xml version=&quot;1.0&quot;?> <rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot; xmlns:product=&quot;http://my.sample.com/product#&quot;> <product:Widget rdf:about=&quot;http://my.sample.com/product#Super-Widget&quot;> <product:ProductID>123</product:ProductID> <product:Name>Super Widget</product:Name> <product:Price>49.99</product:Price> </product:Widget > </rdf:RDF>
  • 22. More Info….
    • “ How I Explained ReST to my Wife” – Ryan Tomayko ( http:// tomayko.com /writings/rest-to-my-wife )
    • ReSTful .NET: Build and Consume ReSTful Web Services with .NET 3.5 - Jon Flanders ( http://www.amazon.com/RESTful-NET-Build-Consume-Services/dp/0596519206/ref=sr_1_1?ie=UTF8&s= books&qid =1259709396&sr=8-1 )
    • PluralSight Screencast – Aaron Skonnard ( http://channel9.msdn.com/shows/Endpoint/endpointtv-Screencast-Consuming-REST-services-with-HttpClient/ )
    • WebScarab Web Proxy Tool ( http:// www.owasp.org/index.php/Category:OWASP_WebScarab_Project )
    • Fiddler Web Proxy Tool ( http://fiddler2.com/fiddler2/ )
    • WCF ReST Starter Kit ( http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId =24644 )

×