KEMBAR78
REST and ASP.NET Web API (Milan) | PPTX
REST & ASP.NET Web API
        @JefClaes
Thanks to the sponsors
about/jefclaes




@jefclaes
http://jefclaes.be
REST
The acronym

REpresentational State Transfer
REST is NOT...

• ‘Webservices using JSON’

• A protocol
• A design pattern
REST is..



“An architectural style for building
distributed hypermedia systems.”
In theory...



  REST isn’t limited to a
single message protocol.
But in practice...



It’s all about HTTP.
So now you wonder..


Haven’t we been successfully building
 web services using SOAP and HTTP
         for over 10 years ?
BASIC CONCEPTS
Resources
• An entity, item, or just a thing you want to expose.
• REST is Resource Oriented.
Resources
Resources
Resources
Resources
Identifiers
Something that identifies a resource.

ID: 1
URI: http://batman.com/api/batresource/1
Representations
View on a resource’s state at an instant in time.

XML:                       JSON:                      Other:

<BatResource>              {                          •   Images
  <Id>1</Id>                 "Id":"1",                •   CSV
  <Description>              "Description":"Bataran   •   Custom
     Batarang              g",                        •   ...
  </Description>             "Quantity":1
  <Quantity>1</Quantity>   }
</BatResource>
Verbs
Actions on a resource.

Create Read Update Delete
POST GET PUT DELETE
Hypermedia
HATEOAS: Hypermedia as the engine of application state
Linking your API together
{
    "Id":"1",
    "Description":"Batarang",
    “Quantity":1,
    “Links":
       {
          "Rel":"Next",
           "Href":"http://localhost:8080/api/batresource/2"
        }
}
HypeRRRRRRRmedia
•   Relations
•   Embedded resources
•   Reference data
•   Redistribution of effort
•   Reduction of payload size
•   Reflow
•   Restriction of functionality
Architecture of the WEB
ARCHITECTURAL VALUES
Scalability and performance
Yes, text-based, synchronous, request-response
can be performant.
• Stateless
• Caching
Loose coupling
•   No transactions
•   No state
•   No guarantees
•   HATEOAS
•   No specific technology stack
Consistency and Uniformity

Everybody knows how to use HTTP
 –Constraints
 –Well understood semantics
LEFT-OVERS
Richardson’s Maturity Model

           Level 0: POX

       Level 1: Resources

    Level 2: HTTP verbs
 Level 3: Hypermedia
ASP.NET WEBAPI
What?


   .NET HTTP framework
       (4.0)



for building RESTful services.
When?
• HTTP Services (WCF)
• AJAX back-ends
The server
Options
• WebHost
  – ASP.NET MVC: Click, click, click
• SelfHost
Starting
Mapping Web API to
  REST concepts
A resource
A resource
Identifiers
Identifiers
Verbs
Verbs
Representations
Representations
application/json
text/xml
Representations
Hypermedia
Hypermedia
The Client
Package
Microsoft.AspNet.WebApi.Client
Verbs and asynchrony
Summary
• REST
   – Concepts
   – Architectual values
   – Left overs
• ASP.NET Web API
   – Server
   – Client
There is more
Slides and source on http://jefclaes.be

Extensibility?
• Next session (Raffaele Rialdi)
• http://github.com/JefClaes/aspnet-webapi-samples-tunisia
Please rate this session
Scan the code, go online, rate this session

REST and ASP.NET Web API (Milan)