O ASP.Net Web API 2 foi anunciado no Microsoft Build Developer Conference 2013 (25/06 -28/06), onde foram também anunciadas ótimas novidades para o ASP.Net em geral em conjunto com o novo Visual Studio 2013.
Para ter um maior entendimento sobre ASP.Net Web API recomendo começar pela leitura do artigo ASP.Net Web API – Meu primeiro serviço REST.
Novidades no ASP.Net Web API 2
Attribute Routing
O ASP.Net Web API agora suporta atributos de roteamento (Attribute Routing). Com os atributos de roteamento é possível especificar as rotas Web API por anotação nas Actions e Controllers como no exemplo a seguir.
[RoutePrefix("orders")]
public class OrdersController : ApiController
{
[HttpGet("{id}")]
public Order Get(int id) { }
[HttpPost("{id}/approve")]
public Order Approve(int id) { }
}
O Attribute Routing possui uma sintaxe conveniênte para especificar parâmetros opcionais (people/{name?}), valores default (people/{name=Dan}) e constraints de rota (people/{name:alpha}).
Usando o Attribute Routing, é possível de forma fácil definir uma hierarquia de recursos através de um única API controller.
public class MoviesController : ApiController
{
[HttpGet("movies")]
public IEnumerable Get() { }
[HttpGet("actors/{actorId}/movies")]
public IEnumerable GetByActor(int actorId) { }
[HttpGet("directors/{directorId}/movies")]
public IEnumerable GetByDirector(int directorId) { }
}
O Attribute Routing é uma feature muito útil e proporciona um controle muito mais granular, tornando o desenvolvimento mais rápido e prático.
Para saber mais:
Melhorias com OData: $select, $expand, $batch, $value e extensibilidade.
O ASP.Net Web API OData agora tem suporte completo para $select, $expand e $value.
É possível usar $batch para requests em lotes e processamento de changsets.
Melhorias de extensibilidade nos formatadores OData permitem adicionar Atom entry Metadata, suporte a Named Stream e Media Link, adicionar Instance Annotations e customização de Link Generation.
Para saber mais:
Request Batching
Request Batching permite combinar várias operações em um único HTTP POST, assim reduzindo o tráfego de rede e fornecendo uma UI mais leve.
O ASP.NET Web API passa a suportar requisições em lote utilizando o endpoint $batch apresentado nas melhorias com OData.
Para ativar o Request Batching basta adicionar uma rota com um batching handler na configuração do Web API.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpBatchRoute(
routeName: "WebApiBatch",
routeTemplate: "api/batch",
batchHandler: new DefaultHttpBatchHandler(GlobalConfiguration.DefaultServer));
}
}
Para saber mais:
Portable ASP.NET Web API Client
Agora é possível utilizar o client do ASP.NET Web API em bibliotecas de classes portáveis que irão trabalhar com aplicativos Windows Store e Windows Phone 8.
Além disso é possível também criar o próprio formatador que será compartilhado entre cliente e servidor.
Isto torna muito mais fácil a escrita de clients .Net que interagem com serviços HTTP RESTful.
Para saber mais:
Melhorias na Testabilidade
Testes de unidade em API Controllers ficaram muito mais fáceis de serem escritos, basta instanciar a API Controller e então chamar a Action Method que deseja testar. É possível de forma muito fácil fazer o mock da classe UrlHelper nos casos em que o Action Method realiza a geração de link.
IHttpActionResult
Na primeira versão do ASP.Net Web API existiam duas maneiras de criar um response de uma API Action, retornar a instância de um objeto conhecido e deixar a Web API convertê-lo em um HttpResponseMessage ou retornar um HttpResponseMessage padrão.
No ASP.Net Web API 2 existe uma terceira opção a IHttpActionResult, muito simples e extremamente poderosa, é efetivamente uma factory para HttpResponseMessage e pela implementação de sua interface é possível fornecer instruções de como o novo response deve ser construído.
Para saber mais:
CORS
O ASP.Net Web API 2 agora possui suporte total a CORS.
A segurança presente nos browsers impedem uma página web de fazer requisições AJAX em outro domínio, essa restrição é chamada de Same-origin policy, porém algumas vezes isso pode ser necessário.
Cross Origin Resource Sharing (CORS) é um padrão W3C que permite que um servidor relaxe em relação a Same-origin policy, usando CORS um servidor pode permitir explicitamente algumas solicitações e rejeitar outras.
Para saber mais:
Authentication Filters
Authentication Filters são um novo tipo de filtro no ASP.NET Web API, são executados antes dos authorization filters no pipeline do Web API e permitem que seja especificada a lógica de autenticação, podendo “per-action”, “per-controller” ou globalmente para todos os controllers.
Authentication Filters processam credenciais durante um request e também podem adicionar “challenges” de autenticação em resposta à solicitações não autorizadas.
Filter Overrides
Agora é possível sobrescrever os filtros que se aplicam a uma determinada action ou controller especificando um conjunto de tipos de filtros que não devem ser executados em um determinado escopo (action ou controller).
Isso permite que sejam configurados os filtros que se aplicam globalmente, porém em seguida excluir determinados filtros globais da aplicação em actions ou controllers específicos.
Suporte e integração com OWIN
O ASP.Net Web API 2 agora suporta totalmente OWIN e poderá rodar em qualquer host que também possua suporte ao OWIN.
Para saber mais:
External Authentication Services
Agora os serviços ASP.Net Web API poderão integrar-se com serviços de autenticação externos como OAuth e OpenID e serviços de autenticação de redes sociais como Microsoft, Twitter, Facebook e Google.
Para saber mais:
Resumo
O ASP.Net Web API 2 possui diversas novidades em relação a primeira versão, todas elas foram planejadas para proporcionar uma maior abrangência na implementação de integrações, extensibilidade com outras tecnologias, segurança no tratamento das requisições e facilidade no desenvolvimento.
Quem já usou o ASP.Net Web API com certeza identificou nessa nova versão grandes e potenciais melhorias que o torna a melhor opção para criação de serviços HTTP REST.
Referências
Gostou deste artigo? Compartilhe e deixe seu comentário abaixo 😉