Rest assured
-
Upload
yaniv-rodenski -
Category
Technology
-
view
1.691 -
download
2
Transcript of Rest assured
Yaniv Rodenski Senior Consultant, Sela Group
http://blogs.microsoft.co.il/blogs/roadanTwitter: @YRodenski
RESTAssured
A brief history of The Web API
Fab 2012
October 2010
March 2012
6 Preview Versions
WCF Web API on Code Plex
ASP.NET Web API (Beta)
ASP.NET is Open Source
State of the web
• Today the web faces new challenges:– Internet scale applications
– Cloud operating systems
State of the web
• Today the web faces new challenges:– Even more complex integrations
State of the web
• Today the web faces new challenges:– Broader reach of clients
• Basic terminology• REST via the ASP.NET Web API
– Richardson maturity model– Hypermedia Patterns– Media types
• Caching
Agenda
• Promise to add “object access”-like semantics to the web– Operation centric– Uses a large message format
• Extensible– Over the years a large amount of extending standards were
created (AKA WS-*)– By extension, adds stateful semantics over the web
• Promotes the use of the proxy pattern• Not web natural• Supported by major development environments
SOAP
• Request
• Response
SOAP Service calls
• Promise to transfer hypertext• The primal and most native protocol of the
web• Stateless• Supported by almost any device on the face of
the earth
HTTP
• Request
• Response
HTTP Service calls
• SOA is an architectural approach for distributed systems
• SOA defines four tenets focusing on service autonomy and boundaries
• SOA is a fully mature architecture with well-known patterns and solutions for complex communication and integration scenarios
SOA
• The term Representational State Transfer (REST) was coined by Roy Fielding in his Ph.D. thesis in 2000
• An architectural style that embraces HTTP and the World Wide Web
• Web friendly
REST
• Leonard Richardson’s maturity model describes four levels of service maturity
Hypermedia
Http
Resources
Richardson maturity model
• Level zero services do not use HTTP as an application protocol.
• Use HTTP as a transport for other remote interaction mechanism
Hypermedia
Http
Resources
RMM – Level zero services
SOAP
• Level one services acknowledge resources• Resources are accessed via a unique address (formatted as a
Universal Resource Identifier)• When accessed, a resource returns a representation
http://myfooty.com/players/henriquehttp://myfooty.com/players/neymar
Hypermedia
Http
Resources
RMM – Level one services
Level one service
• In his famous 2001 bath-tub talk Don Box drew the line between web pages and web services by defining their consuming life forms:
Carbon basedWeb Pages
Silicon basedWeb Services
Web neutrality
• Level two services use HTTP mechanisms properly:– Verbs– Status codes– Headers
RMM – Level two services
Hypermedia
Http
Resources
• HTTP defines different methods (sometimes called verbs) to indicate a desired action to be performed on a resource
• These verbs define a common terminology that is accepted by users, developers and the infrastructure of the World Wide Web
HTTP verbs
Using HTTP verbs for CRUD
• In addition to a response message, HTTP uses status codes to communicate to the clients the resultant status of the operation
• The first digit of the status code specifies one of five classes of response:– 1xx Informational– 2xx Success – 3xx Redirection– 4xx Client Error– 5xx Server Error
HTTP status codes
• HTTP uses headers to transfer metadata regarding the message’s content and transport
• HTTP headers are one of HTTP’s main extensibility points
HTTP headers
Level Two Service
• Level one and two services deal with resources which represent entities
• Level three services introduce flow management via hypermedia controls (For example: links)
RMM – Level three services
Hypermedia
Http
Resources
• Hypermedia is used as a logical extension of the term hypertext in which graphics, audio, video, plain text and hyperlinks intertwine to create a generally non-linear medium of information.
http://en.wikipedia.org/wiki/Hypermedia
RMM – Level three services
Hypermedia
Http
Resources
Hypermedia Application
Hypermedia Patterns
• Hypermedia can be used to express different behaviors in an application:– Control flow management (State machine)– Discoverability and versioning– Properties management– Aspect management– Paging
OData paging
• HTTP media types are used to describe the format of the message body
• In REST media types are used describe representations, hypermedia controls, and processing rules
• By creating a media type we can define the application’s domain
Media types (MIME)
Using Media Formatters
• HTTP caches can store copies of the responses along the request response path to reduce network traffic
• HTTP caches reduces call latency• Caches are a main factor for scalability on the
web
Cache the REST
• Browser CacheStores representations locally on the computer’s hard drive
• Proxy Cache Corporates and ISPs provide shared proxies providing shared cache on their network
• Gateway (Reverse Proxy) Cache Stores representations on behalf of the server. Content Delivery Networks (CDNs) use gateway cache distributed around the web
Types of Cache
• HTTP headers can be used to control cache behaviors
• HTTP provides method the avoid staleness of cached data – Expiration– Validation
Controlling Cache
Controlling Cache Behavior
• HTTP is a powerful application level protocol• Built to serve the worlds largest information
system• REST provides an architecture that enables
better use of the inherent scaling capabilities of the web
• Hypermedia enables us to scale and grow our application
Summary
Roy Fieldinghttp://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
Architectural Styles and the Design of Network-based Software Architectures http://www.w3.org/Protocols/
ASP.NET Web APIshttp://www.asp.net/web-api/
HTTP/1.1 Specifications
http://bit.ly/roadan (best viewed from multiple ip addresses)
My Blog
http://restinpractice.com/default.aspx REST in practice (Book)
Ido Flatowhttp://scc.sela.co.il/SCC/Pages/ShowLecture/ShowLecture.aspx?lectureId=642
Debugging the web with Fiddler