ASP .NET Web API Vinicius Mussak Desenvolvedor de soluções/bugs MCP - MSP mussak@engsolutions.com.br
Roteiro •Introdução •Fundamentos •Iniciando com Web API •Rotas •Consumindo serviços •Hospedagem de serviços
Introdução Requisitos para começar: ASP .NET + = ♥• Visual Studio 2012 • Visual Studio Express 2012 For Web
Introdução O que é ASP .NET Web API: ASP .NET Web Forms Sites Web Pages Single Page Apps SignalR Services Web API MVC
Fundamentos •Protocolo HTTP •URI x URL •Recursos •Tipos de serviço •StateFul x StateLess •REST •SOAP x REST •Verbos HTTP
Protocolo HTTP •Hypertext Transfer Protocol
URI x URL URL é um conceito informal!
URI x URL
URI x URL http://www.engsolutions.com.br/treinamentos/webapi?versao=1.0 protocolo sub-domínio domínio caminho recurso
Recursos •Representam algo “interessante” no sistema •É uma boa prática trabalhar com “representações” •Devem possuir nomes e endereços definidos
Recursos etc...
Recursos Então eu só posso acessar recursos físicos?
Recursos
Recursos •Servidores Web entendem URI •URI possui uma estrutura definida (template) •Métodos possuem assinatura •Podemos mapear URI para métodos
Recursos http://www.engsolutions.com.br/ treinamentos / webapi ? versao=1.0 Serviço Método Argumentos
Tipos de serviço O que é um serviço?
Tipos de serviço Serviço é um mecanismo que expõe uma, ou mais, funcionalidades de um sistema.
Tipos de serviço •Serviços básicos: Atendem seu propósito sozinhos sem depender de outros serviços. •Serviços compostos: Necessitam interagir com outros serviços para atender as requisições.
Tipos de serviço Serviços de Negócio Envio de Mercadorias Ordem de Compras Serviços de Infraestrutura Persistência de dados Log de operações
Tipos de serviço StateFUL Existe a preservação do estado das requisições no servidor. StateLESS Não é mantido o estado das requisições.
REST Representational State Transfer
REST •Padrão arquitetural •Criado por Roy Fielding em 2000 •Interface simples de comunicação = HTTP •Fácil de entender •Transferência enxuta de dados •StateLess
SOAP ou REST?
REST
SOAP + =
REST •Simples de implementar •Interoperável •Escalável •Tipos de hipermídia variados •Verbos HTTP •Baseado em recursos
REST Pura representação dos recursos XML JSON ATOM
REST { “Nome”: “Zézinho”, “Idade”: 50, “Altura”: “1,80”, “Peso”: “90kg”, “Sexo”: “1 vez ao ano” }
REST ou RESTful?
https://drive.google.com/file/d/0BzhwZbKT3IrCaVo5TmNkTnNyLTQ/view?usp=sharing
Verbos HTTP
Verbos HTTP
Verbos HTTP Denominação correta: Http Methods
Verbos HTTP Indica qual ação será executada
Verbos HTTP HTTP/1.0: •GET •POST •HEAD HTTP/1.1: •OPTIONS •PUT •DELETE •TRACE •CONNECT
Verbos HTTP GET •Responsável por buscar informações através de uma URI. http://www.server.com/produtos http://www.server.com/produto/7 http://www.server.com/produto/notebook
Verbos HTTP POST •Responsável por enviar informações através de uma URI, com o conteúdo embutido no corpo de requisição. http://www.server.com/produto ... { “Nome”: “Mouse”, “Preco”: 50.0 }
Verbos HTTP DELETE •Responsável por remover informações através de uma URI. http://www.server.com/produto/7
Verbos HTTP PUT •Responsável por atualizar informações através de uma URI, com o conteúdo embutido no corpo de requisição. http://www.server.com/produto/7 ... { “Nome”: “Mouse”, “Preco”: 55.0 }
HTTP Status Code •200 – OK: • A requisição foi bem sucedida. •401 – Unauthorized • A URI especificada precisa de autenticação •404 – Not Found: • O recurso não foi encontrado •500 – Internal Server Error • DEU PAU
•1xx  Informativos •2xx  Sucesso •3xx  Redirecionamento •4xx  Erro do cliente •5xx  Erro do servidor HTTP Status Code
Iniciando com Web API •O que é uma Web API? •ASP .NET Web API •Configurações •Convenções •DEMO
O que é uma Web API? Framework que facilita a construção de serviços over HTTP com forte interoperabilidade e possibilidade de acesso a partir dos mais variados dispositivos.
O que é uma Web API? É a plataforma recomendada para a construção de aplicações RESTful na plataforma .NET
ASP .NET Web API • Arquitetura simplificada • Lembra o desenvolvimento com Controllers(MVC) • Utiliza rotas para disponibilizar recursos • Hospedagem flexível • Leve • Testável • Escalável • GRÁTIS!!!
ASP .NET Web API •Disponível a partir do ASP .NET MVC 4 e VS 2012 •Também via NuGet •.NET Framework 4.0 >= •www.asp.net/web-api •Mantenha atualizado!
ASP .NET Web API Quem consome uma API?
ASP .NET Web API API é para sistemas, não para o usuário final
ASP .NET Web API Estrutura do Controller Sufixo “Controller” Herda de “ApiController” Ações de acordo com o verbo HTTP
•Nome da classe deve ser [Nome]Controller •A classe deve herdar de ApiController •Verbos são associados a Actions • GET == Get(...) • POST == Post(...) •Porém, verbos NÃO são associados a Actions ASP .NET Web API Estrutura do Controller
DEMO •Criando um projeto WebAPI •Criando um Controller •Modificando ações e verbos •Trabalhando com parâmetros •Serialização
Rotas
WebApiConfig
Attribute-routing
DEMO •Rotas default •Attribute-routing
Consumindo serviços •HttpClient •JavaScript •Navegador •Mobile •Java, Python...
Consumindo serviços •Acessa qualquer coisa exposta com HTTP •Incluído no .NET 4.5 •Permite async •Baseado em request e response Http Client
Http Client
Http Client
Consumindo serviços •N plataformas •Qualquer um manja •Leve e fácil JavaScript
JavaScript (jQuery)
DEMO •Utilizando HttpClient •Utilizando JavaScript •Utilizando Postman :D
Hospedagem •OWIN •Self-host •IIS •Azure
DEMO •Hospedando no Azure
VOCÊS MANDAM!!! INJEÇÃO DE DEPENDÊNCIA ? CONEXÃO COM O BANCO? TRATAMENTO DE ERROS? FILTROS? .NET CORE?
Dúvidas?
Isso é tudo pessoal :D viniciusmussak.net /viniciusmussak /viniciusmussak @ViniciusMussak /vmussak mussak@engsolutions.com.br

Introdução ao ASP .NET Web API

Notas do Editor

  • #7 - Baseado em requisições e respostas entre clientes e servidores.  Diferente de uma conexão com o banco de dados (SSL) Não é orientado a conexões Não guarda estado de sessão entre requisições Protocolo de aplicação para comunicação distribuída, colaborativa e troca de informação através de formatos de hipermídia.
  • #9 URI = Identificador Uniforme de Recursos URL = Localizador Uniforme de Recursos URN = Nome Uniforme de Recurso
  • #11 Evitar acessar o recurso diretamente
  • #26 Martin Lawrence
  • #29 Interoperável = Que é capaz de operar, funcionar ou atuar com outro.
  • #38 OPTIONS: Devolve as maneiras de acessar um recurso HEAD: Retorna informações sobre um recurso. Mas o corpo não é retornado TRACE: Devolve a mesma requisição que for enviada veja se houve mudança e/ou adições feitas por servidores intermediários. CONNECT: Converte a requisição de conexão para um túnel TCP/IP transparente, geralmente para facilitar a comunicação criptografada com SSL (HTTPS) através de um proxy HTTP não criptografado.