5. What is ASP
.NET Web API?
New Microsoft framework (August 2012, Version 2
October 2013) for building HTTP services & applications
Aimed at simplyfing and standardizing HTTP area on the
MS stack (see: WCF / ASMX / MVC / HttpHandlers)
HTTP as a fully fledged *application* protocol
Async from top-to-bottom
Open source!
@filip_woj
6.
7.
8. “ASP
.NET” “Web API”
The name creates lots of misconceptions
“ASP
.NET”:
it doesn't require neither ASP
.NET, nor IIS to run
“Web API”:
it's an HTTP framework, that can do much more than "just" API
@filip_woj
9. How can it work without ASP
.NET/IIS?
Web hosting:
ASP
.NET & IIS
Self hosting: (using WCF hardened core)
WPF
Windows service
console app, any other .NET app
OWIN (i.e. Katana)
Memory hosting: whole pipeline running in memory
@filip_woj
14. HTTP status codes
1xx – Informational
2xx – Successful
3xx – Redirection
4xx – Error on the client side
5xx – Error on the server side
@filip_woj
23. HTTP verbs
Represent core operations on a resource:
- GET: read, cachable, retreives a resource
- POST: non-cacheable, creates a resource
- PUT: updates a resource, safe to call multiple times
- DELETE: deletes a resource, safe to call multiple times
Can also use others i.e. PATCH (partial update of a
resource)
@filip_woj
26. Controllers
Represent your API resources
Similar as in MVC
Routing engine determines which controller to use
Web API 2 introduces attribute routing
Supports nested resources
@filip_woj
27. Dispatching actions
By default HTTP verb based (RESTful)
Actions matched:
by prefix (i.e. GetAll, GetById) or
by action attribute (i.e. [HttpPost])
Can be changed to action based (RPC style)
@filip_woj
29. Content negotiation
Dynamically deciding the media type
Same data can be represented in various formats:
- JSON
– XML
– CSV
– binary
– anything to what your data can be serialized/deserialized from
In Web API done with MediaTypeFormatters
@filip_woj
30. Content negotiation in Web API
Web API uses the following precedence:
1. MediaTypeMapping
/api/resource.json, /api/resource?format=json
2. Accept headers
Accept: application/json
3. Content type header
Content-Type: text/xml
4. MediaTypeFormatter order & check whether a formatter can
serialize/deserialize a given type
@filip_woj
34. Client-server symmetry
By: Henrik Frystyk Nielsen
Message handlers can run on server and on the client
HttpServer is a message handler itself
@filip_woj