Top Banner
Programando com ASP.NET Web API TDC 2012 – .NET
34

Programando com ASP.NET Web API

May 24, 2015

Download

Technology

Igor Abade

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.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programando com ASP.NET Web API

Programando com ASP.NET Web API

TDC 2012 – .NET

Page 2: Programando com ASP.NET Web API

@IgorAbadeblog.lambda3.com.br/L3/IgorAbade

Page 3: Programando com ASP.NET Web API

O que é uma API Web?

Um serviço HTTP

Desenhado para amplo consumo

Usa HTTP como protocolo de aplicação, não como protocolo de transporte

Page 4: Programando com ASP.NET Web API

Por que criar APIs Web?

Page 5: Programando com ASP.NET Web API

Por que criar APIs Web?• Alcançar mais clientes

Page 6: Programando com ASP.NET Web API

Por que criar APIs Web?• Escalar com a Nuvem

Page 7: Programando com ASP.NET Web API

GET /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/20070312 Firefox/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

Por que criar APIs Web?• Adotar completamente o HTTP

Page 8: Programando com ASP.NET Web API

Highrise: API Web na vida realdemo

Page 9: Programando com ASP.NET Web API

Requisitos para criar uma API Web

Modelo de programação HTTP de primeira-classe

Mapear facilmente recursos para URIs e implementar a interface

Suporte rico para formatos e negociação de conteúdo

Separação de responsabilidades transversais

Leve, testável, escalável

Page 10: Programando com ASP.NET Web API

?ASP.NET MVC

WCF Web HTTPWCF REST Starter KitWCF Web API

Então você quer criar sua API...

Page 11: Programando com ASP.NET Web API

Então você quer criar sua API...

+ASP.NET MVC

WCF Web HTTPWCF REST Starter KitWCF Web API

Page 12: Programando com ASP.NET Web API

Então você quer criar sua API...

ASP.NET Web API

Page 13: Programando com ASP.NET Web API

Recursos do ASP.NET Web APIDo ASP.NET MVC• ASP.NET Routing• Model binding• Validation• Filters• Link generation• Testability• IoC integration• VS template• Scaffolding

Do WCF Web API• Modern HTTP programming model• HttpClient• Task-based async• Formatting, content negotiation• Server-side query composition• Create custom help pages• Self-host• Tracing

Page 14: Programando com ASP.NET Web API

www.asp.net/web-api

Page 15: Programando com ASP.NET Web API

Open-source!aspnetwebstack.codeplex.com

Page 16: Programando com ASP.NET Web API

Hello Web APIdemo

Page 17: Programando com ASP.NET Web API

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

Page 18: Programando com ASP.NET Web API

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

Page 19: Programando com ASP.NET Web API

Rota Web API padrãoroutes.MapHttpRoute(

name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional });

Page 20: Programando com ASP.NET Web API

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)

Page 21: Programando com ASP.NET Web API

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

Page 22: Programando com ASP.NET Web API

Northwind Traders!!!demo

Page 23: Programando com ASP.NET Web API

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

Page 24: Programando com ASP.NET Web API

HTTP DispatcherInvoke Action

Action filters

Model Bind

Select action Exception filters

Route to controller Formatting

Request Response

Authorization filters

Page 25: Programando com ASP.NET Web API

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

Page 26: Programando com ASP.NET Web API

IApiExplorerIApiExplorer apiExplorer =

config.Services.GetApiExplorer();

public interface IApiExplorer{

Collection<ApiDescription> ApiDescriptions { get; }

}

Page 27: Programando com ASP.NET Web API

Página de Documentaçãodemo

Page 28: Programando com ASP.NET Web API

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

Page 29: Programando com ASP.NET Web API

Negociação de Conteúdo// Get the IContentNegotiator

IContentNegotiator negotiator = Configuration.Services.GetContentNegotiator();

// Run content negotiation to select a formatter

MediaTypeHeaderValue mediaType;

MediaTypeFormatter formatter = negotiator.Negotiate(

typeof(Contact), Request, Configuration.Formatters, out mediaType);

// Create a response message with an object content using the selected formatter

HttpResponseMessage response = new HttpResponseMessage()

{

Content = new ObjectContent<Contact>(contact, formatter),

RequestMessage = Request

};

Page 30: Programando com ASP.NET Web API

Personalizando meu URLdemo

Page 31: Programando com ASP.NET Web API

• 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

Hospedagem

Page 32: Programando com ASP.NET Web API

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

Page 33: Programando com ASP.NET Web API

ConclusãoASP.NET Web API no MVC 4 simplifica a criação de serviços HTTP que podem atender diversos clientes

ASP.NET Web API é a plataforma .NET ideal para a criação de serviços RESTful

“Brinque” com o ASP.NET MVC 4 Release Candidate

Acompanhe e participe da evolução do projeto no CodePlex

Page 34: Programando com ASP.NET Web API

www.lambda3.com.br