Successfully reported this slideshow.
TDC 2012 – .NETProgramando comASP.NET Web API
@IgorAbadeblog.lambda3.com.br/L3/IgorAbade
O que é uma API Web?Um serviço HTTPDesenhado para amplo consumoUsa HTTP como protocolo de aplicação, não comoprotocolo de ...
Por que criar APIs Web?
Por que criar APIs Web?• Alcançar mais clientes
Por que criar APIs Web?• Escalar com a Nuvem
Por que criar APIs Web?• Adotar completamente o HTTPGET /en/html/dummy.php?name=MyName&married=not+single &male=yes HTTP/1...
Highrise: API Web na vida real
Requisitos para criar uma API Web                                                                                         ...
Então você quer criar sua API...
Então você quer criar sua API...
Então você quer criar sua API...
Recursos do ASP.NET Web APIDo ASP.NET MVC        Do WCF Web API•   Link generation   •   Server-side query composition•   ...
www.asp.net/web-api
Open-source!aspnetwebstack.codeplex.com
Hello Web API
Para implementar uma API Web• Derivar de ApiController• Implementar suas ações (Actions)  – Actions são mapeadas para méto...
Routing• Mapeia um espaço de URI para seus  ApiControllers  – Ex.: api/{controller}/{id}  – {controller} + “Controller” = ...
Rota Web API padrãoroutes.MapHttpRoute(   name: "DefaultApi",   routeTemplate: "api/{controller}/{id}",   defaults: new { ...
Parâmetros de ação• Tipos de dados simples vêm do URI   – Dados da rota, parâmetros da query string• Tipos complexos vêm d...
Validação• Validação é executada sobre os dados de cada  requisição• Erros de validação são acumulados no ModelState• Veri...
Northwind Traders!!!
Filtros• Filtros cuidam das responsabilidades transversais• Tipos de filtro:   – Filtros de ação rodam antes e depois de i...
HTTP Dispatcher                             Invoke Action                             Action filters          Model Bind  ...
Descrição de uma API Web• Use o serviço IApiExplorer para gerar uma  descrição em tempo de execução da sua API• Útil para ...
IApiExplorerIApiExplorer apiExplorer =   config.Services.GetApiExplorer();public interface IApiExplorer{   Collection<ApiD...
Página de Documentação
Negociação de Conteúdo• Formato da resposta é definido baseado na Negociação de  Conteúdo HTTP• Cabeçalho HTTP “Accept” na...
Negociação de Conteúdo// Get the IContentNegotiatorIContentNegotiator negotiator = Configuration.Services.GetContentNegoti...
Personalizando meu URL
Hospedagem• Duas opções de  hospedagem   –   ASP.NET Web Application (IIS)   –   Self-hosting (ex. Console app, Windows   ...
Como eu começo?•   ASP.NET Web API vem com o ASP.NET MVC 4•   Suportado no .NET 4•   Já vem nativamente no Visual Studio 2...
ConclusãoASP.NET Web API no MVC 4 simplifica a criação de serviços HTTP quepodem atender diversos clientesASP.NET Web API ...
www.lambda3.com.br
Upcoming SlideShare
Loading in …5
×

Programando com ASP.NET Web API

2,416 views

Published on

ASP.NET MVC 4 agora inclui suporte avançado para criação de APIs Web usando o novo framework ASP.NET Web API. Nesta palestra você verá como usar o ASP.NET Web API para criar serviços HTTP que podem chegar a um amplo conjunto de clientes, incluindo navegadores e dispositivos móveis. ASP.NET Web API é um framework novo no ASP.NET MVC 4 para criar e consumir serviços HTTP. Esta palestra mostra como é fácil criar APIs Web que implementam a interface uniforme dos recursos HTTP, como suportar uma ampla gama de formatos (JSON, XML etc.) e permitir que clientes informem os formatos de resposta aceitáveis ​​usando negociação de conteúdo HTTP. Saiba como testar suas APIs Web, ativar a segurança, diagnosticar problemas e gerar páginas de ajuda.

Published in: Technology
  • Be the first to comment

Programando com ASP.NET Web API

  1. 1. TDC 2012 – .NETProgramando comASP.NET Web API
  2. 2. @IgorAbadeblog.lambda3.com.br/L3/IgorAbade
  3. 3. O que é uma API Web?Um serviço HTTPDesenhado para amplo consumoUsa HTTP como protocolo de aplicação, não comoprotocolo de transporte
  4. 4. Por que criar APIs Web?
  5. 5. Por que criar APIs Web?• Alcançar mais clientes
  6. 6. Por que criar APIs Web?• Escalar com a Nuvem
  7. 7. Por que criar APIs Web?• Adotar completamente o HTTPGET /en/html/dummy.php?name=MyName&married=not+single &male=yes HTTP/1.1Host: www.explainth.atUser-Agent: Mozilla/5.0 (Windows;en-GB; rv:1.8.0.11) Gecko/20070312Firefox/1.5.0.11Accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5Accept-Language: en-gb,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Connection: keep-aliveReferer: http://www.explainth.at/en/misc/httpreq.shtml
  8. 8. Highrise: API Web na vida real
  9. 9. Requisitos para criar uma API Web Leve, testável, escalável Separação de responsabilidades transversais Suporte rico para formatos e negociação de conteúdo Mapear facilmente recursos para URIs e implementar a interfaceModelo de programaçãoHTTP de primeira-classe
  10. 10. Então você quer criar sua API...
  11. 11. Então você quer criar sua API...
  12. 12. Então você quer criar sua API...
  13. 13. Recursos do ASP.NET Web APIDo ASP.NET MVC Do WCF Web API• Link generation • Server-side query composition• Testability • Create custom help pages• IoC integration • Self-host• VS template • Tracing• Scaffolding
  14. 14. www.asp.net/web-api
  15. 15. Open-source!aspnetwebstack.codeplex.com
  16. 16. Hello Web API
  17. 17. Para implementar uma API Web• Derivar de ApiController• Implementar suas ações (Actions) – Actions são mapeadas para métodos HTTP – Prefixar nomes dos métodos com o método HTTP desejado; ex.: PostComment – Usar atributos [HttpGet/Post/Put/Delete] se você preferir um nome diferente
  18. 18. Routing• Mapeia um espaço de URI para seus ApiControllers – Ex.: api/{controller}/{id} – {controller} + “Controller” = nome da classe ApiController• Pode ser ajustado usando valores default e restrições de rota
  19. 19. Rota Web API padrãoroutes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );
  20. 20. Parâmetros de ação• Tipos de dados simples vêm do URI – Dados da rota, parâmetros da query string• Tipos complexos vêm do corpo da requisição – Os MediaTypeFormatters configurados são usados para deserializar o corpo da requisição baseados no content type – JSON, XML e form-url-encoded suportados nativamente• Pode ser alterado com atributos [FromUrl], [FromBody], [ModelBinder] (custom parameter binding)
  21. 21. Validação• Validação é executada sobre os dados de cada requisição• Erros de validação são acumulados no ModelState• Verifique o valor de ModelState.IsValid• Usa DataAnnotations ou lógica personalizada de validação
  22. 22. Northwind Traders!!!
  23. 23. Filtros• Filtros cuidam das responsabilidades transversais• Tipos de filtro: – Filtros de ação rodam antes e depois de invocar uma ação – Filtros de autorização rodam antes do Model Binding e servem para verificar as permissões (autorizar) o usuário – Filtros de exceção permitem gerar respostas de erro de maneira centralizada• Filtros podem ser configurados globalmente, por controlador ou por ação, usando atributos
  24. 24. HTTP Dispatcher Invoke Action Action filters Model Bind Authorization filters Select action Exception filters Route to controller Formatting Request Response
  25. 25. Descrição de uma API Web• Use o serviço IApiExplorer para gerar uma descrição em tempo de execução da sua API• Útil para criar páginas de ajuda/documentação, clientes de teste e outras ferramentas
  26. 26. IApiExplorerIApiExplorer apiExplorer = config.Services.GetApiExplorer();public interface IApiExplorer{ Collection<ApiDescription> ApiDescriptions { get; }}
  27. 27. Página de Documentação
  28. 28. Negociação de Conteúdo• Formato da resposta é definido baseado na Negociação de Conteúdo HTTP• Cabeçalho HTTP “Accept” na requisição indica o formato desejado• Servidor excolhe um formato para a resposta baseado em: – Cabeçalhos da requisição – Tipo de dados de retorno – MediaTypeFormatters configurados• JSON e XML suportados nativamente• Pode ser personalizado (ex.: RSS/Atom) – Diferente do ASP.NET MVC, não é view. MediaTypeFormatter personalizado
  29. 29. Negociação de Conteúdo// Get the IContentNegotiatorIContentNegotiator negotiator = Configuration.Services.GetContentNegotiator();// Run content negotiation to select a formatterMediaTypeHeaderValue mediaType;MediaTypeFormatter formatter = negotiator.Negotiate( typeof(Contact), Request, Configuration.Formatters, out mediaType);// Create a response message with an object content using the selected formatterHttpResponseMessage response = new HttpResponseMessage(){ Content = new ObjectContent<Contact>(contact, formatter), RequestMessage = Request};
  30. 30. Personalizando meu URL
  31. 31. Hospedagem• Duas opções de hospedagem – ASP.NET Web Application (IIS) – Self-hosting (ex. Console app, Windows Service, Azure Worker Role etc.)• HttpConfiguration é o denominador comum• Hospedagem em memória para testes fim-a-fim• Tem um adaptador OWIN para hospedar em qualquer web server compatível com OWIN
  32. 32. Como eu começo?• ASP.NET Web API vem com o ASP.NET MVC 4• Suportado no .NET 4• Já vem nativamente no Visual Studio 2012• Release Candidate disponível via – Web Platform Installer – NuGet – Visual Studio 2012 RC
  33. 33. ConclusãoASP.NET Web API no MVC 4 simplifica a criação de serviços HTTP quepodem atender diversos clientesASP.NET Web API é a plataforma .NET ideal para a criação de serviçosRESTful“Brinque” com o ASP.NET MVC 4 Release CandidateAcompanhe e participe da evolução do projeto no CodePlex
  34. 34. www.lambda3.com.br

×