240 likes | 415 Views
ASP.NET Web API. Udaiappa Ramachandran NHDN-Nashua .NET/Cloud Computing UG Lead Email: udaiappa@gmail.com Blog: http://cloudycode.wordpress.com. Agenda. Introduction to Web API Web API Routing Web API Pipeline Dependency Injections and Resolvers Model Binding and Media Formats
E N D
ASP.NET Web API Udaiappa Ramachandran NHDN-Nashua .NET/Cloud Computing UG Lead Email: udaiappa@gmail.com Blog: http://cloudycode.wordpress.com
Agenda • Introduction to Web API • Web API Routing • Web API Pipeline • Dependency Injections and Resolvers • Model Binding and Media Formats • Self Hosting • Deploying Web API into cloud • References
Introduction to Web API • Next iteration of WCF REST • Framework for developing REST Services • Released part of ASP.NET MVC • Uses HTTP protocol • Accessible from wide variety of clients • Http Methods: GET, POST, PUT, DELETE • URLs and Methods
Web API Routing • Web API Routing very similar to MVC routing • Action determined using the HTTP method not the URI path • Uses “api” in the rout is to avoid collisons with ASP.NET MVC routing. • Adds “Controller” to the controller part of the URL • Default mapping thru global.asax • Additional URL parameters are mapped as action parameters • Explicitly specify the HTTP methods for an action by decorating the action method with HttpGet, HttpPut, HttpPost or HttpDelete attribute • Action can be defined thru AcceptVerbs as a method attributes • Route by Action Name • Override action name by using ActionName attribute • Ignore action by NoAction Attribute
Filtering • Uses OData specific keywords Install-Package Microsoft.AspNet.WebApi.OData -Pre
Web API Pipeline • Both Request and Response Model have pipeline • Web API has client and server side pipelines • Both Share the common object HttpMessageHandler • HttpRequestMessage • Represents all info about http request such as URL, HTTP Methods and Headers • HttpResponseMessage • Represents all the info about the Http Response such as StatusCode, Success Flag, Original Http Request • HttpMessageHandler • Common for both Request and Response • Most common processing code can be placed here • Ideal for authentication • Two Scopes: Global and Per-Route • Custom Handlers • Inherit DelegatingHandler • Custom code to perform any kind of per request functionality
Demo: Web API Pipeline Demo: Custom Handlers
Dependency Resolution • Service Oriented Architecture for Decoupling the object • IoC: The concept of allowing something outside of system to control it. • Often done thru DI frameworks • Unity • Ninject • Castle Windsor • Structure Map • Spring.net • Autofac • Web API provides a hook for us to wire up the complex dependency
Demo: Simple Resolver Demo: Resolve using DI Framework
Data Model and MIME types • Returning JSON • Default return format • Good for mobile apps • does not require any special code • Returning XML • No code change • Set the request content type as application/xml • Mime Types: • return virtually anything that can be sent over the web • Inherit from BufferedMediaTypeFormatter • Override key methods • attach media formatter to configuration
Demo: Data Model Demo: MIME Types
Hosting • IIS • very common hosting solution • set up just like a web app • calls are made via URLs handled by the web server • Self Hosting • Not restricted to IIS • can host in your own process • uses the HttpSelfHostConfiguration • Useful for tightly focused services and apps
Resource • http://cloudycode.wordpress.com • http://www.asp.net/web-api/overview • http://code.msdn.microsoft.com/ASPNET-Web-API-Self-Host-30abca12 • http://msdn.microsoft.com/en-us/library/gg309461.aspx • http://blogs.msdn.com/b/webdev/archive/2012/08/26/asp-net-web-api-and-httpclient-samples.aspx