KEMBAR78
REST and ASP.NET Web API (Tunisia) | PPTX
REST &
ASP.NET Web API
    By @JefClaes
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.




                                           A bank
Identifiers
Something that identifies a resource.

BIC (= Bank Identifier Code): KREDBEBB

URI: http://myapi.com/bank/KREDBEBB
Representations
View on a resource‟s state at an instant in time.

XML:                    JSON:              Other:

<Bank>                  {                  •   Images
  <BIC>KREDBEBB</BIC>       "BIC":"123“,   •   CSV
  <Name>KBC</Name>          “Name”:”KBC”   •   Custom
</Bank>                 }                  •   ...
Verbs
Actions on a resource.

Read, Update, Delete, Add

GET, PUT, DELETE, POST
Hypermedia
HATEOAS: Hypermedia as the engine of application state

Linking your API together
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
Questions?
ASP.NET WEBAPI
What?


  .NET (4.0) HTTP framework
for building RESTful services.
When?
• HTTP Services (WCF)
• AJAX back-ends
The server
Options
• ASP.NET MVC
  – Click, click, click
• SelfHost
Selfhost
Packages
Microsoft.AspNet.WebApi.SelfHost
Starting
Simple CRUD
Creating a controller
Creating a controller
Without conventions
• Attributes [HttpGet]
• [NonAction]
The Client
Packages
Microsoft.AspNet.WebApi.Client
POST and GET
Exception handling
Default behaviour &
       IncludeErrorDetailPolicy
• By default 500 Internal Server Error
HttpResponseException
ErrorFilters
Content negotiation
XML/JSON
Supported out of the box:
• text/xml
• application/json (NewtonSoft)
Custom formatters
Custom formatters
HTTP
Messagehandlers
HTTP intermediaries
DelegatingHandler
DelegatingHandler
IoC
IDependencyResolver
IDependencyResolver
Testing
Unit testig
Integration testing in-memory
Summary
• REST
  – Concepts
  – Architectual values
  – Left overs
• ASP.NET Web API
  –   Server/client
  –   Exception handling
  –   Content negotiation
  –   Message handlers
  –   IoC
  –   Testing
Questions

REST and ASP.NET Web API (Tunisia)

Editor's Notes