ASP.NET Web API 2 has been released with a number of new exciting features. In this web development post, I'll try to discuss new features of it which can be considered the top 5.
1. Attribute Routing
Along with convention-based routing, Web API 2 now supports attribute routing as well.
In case of convention-based routing, we can define multiple route templates. When a request comes, it will be matched against already defined route templates, and forwarded to specific controller action according to matched template.
You can see the following default route template in routing table for Web API:
Config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{Controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
This routing approach has benefits that all routing templates are defined at one common location but for certain URI patterns, it really becomes difficult to support (like nested routing on same controller).
With ASP.NET Web API 2, we can easily support above mentioned URI pattern and others as well. Following shows an example of a URI pattern with attribute routing.
URI Pattern --> books/1/authors
[Route("books/{bookId}/authors")]
public IEnumerable<Author> GetAuthorByBook(int bookId) { ..... }
2. CORS - Cross Origin Resource Sharing
Normally, browsers don't allow making cross-domain calls due to same-origin policy and we know that. So, what exactly is CORS (Cross Origin Resource Sharing)?
CORS is a mechanism that allows a web page to make an AJAX call to a domain other than the domain which actually rendered that specific web page. CORS is compliant with W3C standards and now ASP.NET Web API has support for it in version 2.
3. OWIN (Open Web Interface for .NET) self hosting
ASP.NET Web API 2 comes with a new self hosting package i.e.
Microsoft.AspNet.WebApi. OwinSelfHost.
According to http://owin.org/
“OWIN defines a standard interface between .NET web servers and web applications. The goal of the OWIN interface is to decouple server and application, encourage the development of simple modules for .NET web development, and, by being an open standard, stimulate the open source ecosystem of .NET web development tools.”
So, according to above description, OWIN is an ideal option for self hosting a web application in a process other than IIS process.
There are a number of OWIN implementations like Giacomo, Kayak, Firefly etc. available (some may be partial or outdated) but Katana is the recommended one for Microsoft servers and Web API frameworks.
4. IHttpActionResult
Along with the existing two approaches of creating response from controller action, ASP.NET Web API 2 now supports another way of doing the same.
IHttpResponseMessage
is basically an interface which acts as a factory for
HttpResponseMessage
. It's very powerful because it extensify web api. Using this approach we can compose any specific type of response.
Please follow the link to know
how to serve HTML with
IHttpActionResult.
5. Web API OData
The Open Data Protocol (OData) is actually a web protocol for querying and updating data. ASP.NET Web API 2 has added support for $expand
, $select
, and $value
options for OData. By using these options, we can control the representation that is returned from the server.
$expand
: Normally, response doesn’t include related entities if we query an OData collection. By using $expand
, we can get related entities inline in response.$select
: It’s used if we wanted to include subset of properties in response instead of all.$value
: It allows to return raw value of the property instead returning in OData format.
Other Web Development Tutorials