São Paulo, 2015
Desenvolvendo API
padrão REST usando
ASP.NET Web API 2
Faustino Manuel (Fausto)
O que é ASP.NET WEB API?
De acordo com Chauhan, ASP.NET WEB API é um framework para construção de serviços HTTP que podem ...
Por que usar o ASP.NET WEB API??
Você provavelmente deve estar se perguntando: por que eu usaria o ASP.NET WEB API diante ...
Quais são os recursos que o WEB API suporta??
Na sua versão 2, o WEB API suporta uma gama de recursos que permitem a criaç...
Quais são os recursos que o WEB API suporta??
Na sua versão 2, o WEB API suporta uma gama de recursos que permitem a criaç...
1.
2.
3. Oferece suporte a JSON, XML e outros formatos
que você quiser usar;
Quais são os recursos que o WEB API suporta??...
1.
2.
3.
4. Também pode aceitar e gerar
conteúdos estáticos como imagens,
arquivos PDF, entre outros;
Quais são os recurso...
1.
2.
3.
4.
5. Pode ser hospedado com a aplicação ou
no IIS, isoladamente;
Quais são os recursos que o WEB API suporta??
N...
2.
3.
4.
5.
6. Oferece suporte aos recursos usados no
ASP.NET MVC como rotas, controladores,
Action Results, filtros, inje...
Como fazer??
Agora que você já entendeu os motivos para usar o ASP.NET WEB API na construção de Web Services, que tal apre...
Comece selecionando a template certa
Para utilizar o Web API 2, você vai precisar da versão 4.5 ou superior do .NET Framew...
Web API com MVC
Como vimos, o ASP.NET WEB API suporta a arquitetura MVC, o que significa que é possível criar um serviço H...
Web API com MVC
Como vimos, o ASP.NET WEB API suporta a arquitetura MVC, o que significa que é possível criar um serviço H...
Componentes básicos
Após a criação, seu novo serviço REST possui alguns componentes básicos. Além da estrutura baseada no ...
Instalação de dependências
Para trabalhar com Web API 2, algumas dependências devem ser instaladas no projeto. Normalmente...
Adicionando um controlador Web API
Um controlador Web API (Web API Controller) é uma classe que permite o recebimento de r...
Criando operações de CRUD
Para o nosso exemplo criamos 6 operações, que são apresentadas a seguir:
Operações Read
ObterTod...
Criando operações de CRUD
Para o nosso exemplo criamos 6 operações, que são apresentadas a seguir:
Operação Create
Post (P...
Criando operações de CRUD
Para o nosso exemplo criamos 6 operações, que são apresentadas a seguir:
Operação Update
Put (lo...
Criando operações de CRUD
Para o nosso exemplo criamos 6 operações, que são apresentadas a seguir:
Operação Delete
Delete ...
Criando Rotas HTTP padrão REST
Para que nossa API esteja de acordo com o padrão REST, precisamos definir rotas HTTP para a...
Operações GET no padrão REST com Attribute
Routing:
GET /api/produtos: obtém todos os produtos
GET /api/produtos/{texto}: ...
Operação POST no padrão REST com Attribute
Routing:
POST /api/produtos: cria um novo produto.
Criando Rotas HTTP padrão RE...
Operação PUT no padrão REST com Attribute
Routing:
PUT /api/produtos/{id}: atualiza um produto
já existente.
Criando Rotas...
Operação DELETE no padrão REST com Attribute
Routing:
DELETE /api/produtos/{id}: remove um produto.
Criando Rotas HTTP pad...
Para que o nosso serviço REST entenda e interprete
nossas rotas, é necessário habilitar a configuração
MapHttpAttributeRou...
Registrando as configurações de rotas
Finalmente, precisamos registrar nossas configurações de rotas na aplicação. Isso é ...
Habilitando CORS
CORS (Cross-Origin Resource Sharing) ou Compartilhamento de Recurso Cross-Origem é um mecanismo que defin...
Habilitando CORS
Habilitar CORS no ASP.NET Web API 2 é muito simples. Uma vez habilitado, requisições AJAX de uma página w...
Habilitando CORS
Habilitar CORS no ASP.NET Web API 2 é muito simples. Uma vez habilitado, requisições AJAX de uma página w...
Habilitando CORS
Executando o mesmo código, não obtemos mais o erro de CORS e os dados são apresentados, conforme imagem a...
Onde encontrar mais conteúdo teórico-prático??
A Internet está completa de conteúdos didáticos (outros nem tanto) para est...
Muito obrigado!
gravatar.com/fawstoh
fausto.net@live.com
Fontes
OBS: algumas das imagens contidas nesse documento não são de minha autoria. Foram retiradas de
diferentes sites da ...
Próximos SlideShares
Carregando em…5
×

Desenvolvendo API padrão REST usando ASP.NET Web API 2

860 visualizações

Publicada em

Palestra ministrada na FATEC de Tiradentes, São Paulo, SP.

Publicada em: Software

Desenvolvendo API padrão REST usando ASP.NET Web API 2

  1. 1. São Paulo, 2015 Desenvolvendo API padrão REST usando ASP.NET Web API 2 Faustino Manuel (Fausto)
  2. 2. O que é ASP.NET WEB API? De acordo com Chauhan, ASP.NET WEB API é um framework para construção de serviços HTTP que podem ser consumidos por um universo de clientes incluindo navegadores, aplicativos de celulares e tablets. Faz parte do Core da plataforma ASP.NET, podendo ser usado com o MVC e outros modelos de arquitetura de aplicações web. Na sua versão 2, oferece recursos que facilitam a criação de serviços no padrão REST, totalmente compatível com os mais modernos e famosos navegadores e dispositivos do mercado.
  3. 3. Por que usar o ASP.NET WEB API?? Você provavelmente deve estar se perguntando: por que eu usaria o ASP.NET WEB API diante de outras plataformas de construção de Web Services? Chauhan dá a resposta... “Web API é uma bela estrutura para expor seus dados e serviços para diferentes dispositivos. Além disso, é open source, uma plataforma ideal para a construção de serviços RESTful sobre o .NET Framework“. “Ele usa os recursos completos do HTTP (como URIs , cabeçalhos de request/response, cache , controle de versões, diferentes formatos de conteúdo) e você não precisa definir nenhuma configuração extra para dispositivos diferentes”.
  4. 4. Quais são os recursos que o WEB API suporta?? Na sua versão 2, o WEB API suporta uma gama de recursos que permitem a criação completa de serviços totalmente RESTful. Alguns desses recursos são listados a seguir: 1. Suporta ações convencionais baseadas em CRUD, uma vez que trabalha com verbos HTTP GET, POST, PUT, PATCH e DELETE;
  5. 5. Quais são os recursos que o WEB API suporta?? Na sua versão 2, o WEB API suporta uma gama de recursos que permitem a criação completa de serviços totalmente RESTful. Alguns desses recursos são listados a seguir: 1. v 2. As respostas suportam cabeçalhos HTTP e códigos que representam o status;
  6. 6. 1. 2. 3. Oferece suporte a JSON, XML e outros formatos que você quiser usar; Quais são os recursos que o WEB API suporta?? Na sua versão 2, o WEB API suporta uma gama de recursos que permitem a criação completa de serviços totalmente RESTful. Alguns desses recursos são listados a seguir:
  7. 7. 1. 2. 3. 4. Também pode aceitar e gerar conteúdos estáticos como imagens, arquivos PDF, entre outros; Quais são os recursos que o WEB API suporta?? Na sua versão 2, o WEB API suporta uma gama de recursos que permitem a criação completa de serviços totalmente RESTful. Alguns desses recursos são listados a seguir:
  8. 8. 1. 2. 3. 4. 5. Pode ser hospedado com a aplicação ou no IIS, isoladamente; Quais são os recursos que o WEB API suporta?? Na sua versão 2, o WEB API suporta uma gama de recursos que permitem a criação completa de serviços totalmente RESTful. Alguns desses recursos são listados a seguir:
  9. 9. 2. 3. 4. 5. 6. Oferece suporte aos recursos usados no ASP.NET MVC como rotas, controladores, Action Results, filtros, injeção de dependências, entre outros. Quais são os recursos que o WEB API suporta?? Na sua versão 2, o WEB API suporta uma gama de recursos que permitem a criação completa de serviços totalmente RESTful. Alguns desses recursos são listados a seguir:
  10. 10. Como fazer?? Agora que você já entendeu os motivos para usar o ASP.NET WEB API na construção de Web Services, que tal aprender como fazer? Let’s do it step by step!!! Para exemplificar a criação de serviços REST no Visual Studio usando Web API 2, vamos utilizar como exemplo um projeto simples de listagem de produtos.
  11. 11. Comece selecionando a template certa Para utilizar o Web API 2, você vai precisar da versão 4.5 ou superior do .NET Framework. Porém, é possível (mas, não recomendado) instalar o Web API usando versões anteriores do .Net (veja aqui: http://goo.gl/YR79lg). Para esse tipo de projetos, recomenda-se utilizar, no mínimo, o VS 2012. Porém, você pode fazê-lo usando a versão 2010, com .NET 4 instalado (veja aqui: http://goo.gl/e8ev8T). Abra o Visual Studio e crie um novo projeto usando a template ASP.NET Web Application, conforme a figura ao lado.
  12. 12. Web API com MVC Como vimos, o ASP.NET WEB API suporta a arquitetura MVC, o que significa que é possível criar um serviço HTTP RESTful com todos os recursos fornecidos pelo ASP.NET MVC Framework sob a plataforma .NET. A seguir, selecione a opção Web API. Caso você pretende construir sua própria camada de autenticação, selecione a opção No Authentication.
  13. 13. Web API com MVC Como vimos, o ASP.NET WEB API suporta a arquitetura MVC, o que significa que é possível criar um serviço HTTP RESTful com todos os recursos fornecidos pelo ASP.NET MVC Framework sob a plataforma .NET. Após selecionar corretamente a template, clique em OK e aguarde a conclusão do processo de criação do projeto. No final, a estrutura do seu projeto deverá ficar tal como na figura ao lado.
  14. 14. Componentes básicos Após a criação, seu novo serviço REST possui alguns componentes básicos. Além da estrutura baseada no MVC, um layout padrão também é criado, podendo ser customizado mais tarde com base na sua necessidade. Utilizando POSTMAN (extensão do Chrome que funciona como cliente para serviços REST) já é possível obter dados do controlador de exemplo denominado Values.
  15. 15. Instalação de dependências Para trabalhar com Web API 2, algumas dependências devem ser instaladas no projeto. Normalmente, o Visual Studio instala essas dependências durante a criação do projeto conforme apresentado na figura a seguir. Para instalar manualmente as dependências do Web API 2, abra o console de gerenciamento de pacotes do VS e digite: Install-Package Microsoft.AspNet.WebApi
  16. 16. Adicionando um controlador Web API Um controlador Web API (Web API Controller) é uma classe que permite o recebimento de requisições e o envio de dados por meio de respostas HTTP. Para o nosso exemplo, criamos um controlador e chamamos de ProdutosController. Veja aqui como adicionar um controlador Web API: http://goo.gl/A3qyc Ao adicionar um controlador Web API uma herança à classe ApiController é feita. Essa herança é necessária, uma vez que todo tratamento de request/response encontra-se encapsulado.
  17. 17. Criando operações de CRUD Para o nosso exemplo criamos 6 operações, que são apresentadas a seguir: Operações Read ObterTodos(): obtém todos os produtos. ObterPorTexto(string texto): obtém todos os produtos que contêm determinado texto no nome. ObterPorId(long id): obtém um produto cujo ID é igual ao enviado por parâmetro.
  18. 18. Criando operações de CRUD Para o nosso exemplo criamos 6 operações, que são apresentadas a seguir: Operação Create Post (Produto produto): cria um novo produto.
  19. 19. Criando operações de CRUD Para o nosso exemplo criamos 6 operações, que são apresentadas a seguir: Operação Update Put (long id, Produto produto): atualiza um produto já existente.
  20. 20. Criando operações de CRUD Para o nosso exemplo criamos 6 operações, que são apresentadas a seguir: Operação Delete Delete (long id): remove um produto.
  21. 21. Criando Rotas HTTP padrão REST Para que nossa API esteja de acordo com o padrão REST, precisamos definir rotas HTTP para as operações criadas, utilizando as diretrizes nele estabelecidas. O Web API oferece suporte ao atributo ROUTING (Attribute Routing), recurso que facilita a criação de rotas para as operações de controlador. Saiba mais aqui: http://goo.gl/maZa0A
  22. 22. Operações GET no padrão REST com Attribute Routing: GET /api/produtos: obtém todos os produtos GET /api/produtos/{texto}: obtém todos os produtos que contêm determinado texto no nome GET /api/produtos/{id}: obtém um produto cujo ID é igual ao enviado por parâmetro Criando Rotas HTTP padrão REST Para que nossa API esteja de acordo com o padrão REST, precisamos definir rotas HTTP para as operações criadas, utilizando as diretrizes nele estabelecidas. O Web API oferece suporte ao atributo ROUTING (Attribute Routing), recurso que facilita a criação de rotas para as operações de controlador. Saiba mais aqui: http://goo.gl/maZa0A
  23. 23. Operação POST no padrão REST com Attribute Routing: POST /api/produtos: cria um novo produto. Criando Rotas HTTP padrão REST Para que nossa API esteja de acordo com o padrão REST, precisamos definir rotas HTTP para as operações criadas, utilizando as diretrizes nele estabelecidas. O Web API oferece suporte ao atributo ROUTING (Attribute Routing), recurso que facilita a criação de rotas para as operações de controlador. Saiba mais aqui: http://goo.gl/maZa0A
  24. 24. Operação PUT no padrão REST com Attribute Routing: PUT /api/produtos/{id}: atualiza um produto já existente. Criando Rotas HTTP padrão REST Para que nossa API esteja de acordo com o padrão REST, precisamos definir rotas HTTP para as operações criadas, utilizando as diretrizes nele estabelecidas. O Web API oferece suporte ao atributo ROUTING (Attribute Routing), recurso que facilita a criação de rotas para as operações de controlador. Saiba mais aqui: http://goo.gl/maZa0A
  25. 25. Operação DELETE no padrão REST com Attribute Routing: DELETE /api/produtos/{id}: remove um produto. Criando Rotas HTTP padrão REST Para que nossa API esteja de acordo com o padrão REST, precisamos definir rotas HTTP para as operações criadas, utilizando as diretrizes nele estabelecidas. O Web API oferece suporte ao atributo ROUTING (Attribute Routing), recurso que facilita a criação de rotas para as operações de controlador. Saiba mais aqui: http://goo.gl/maZa0A
  26. 26. Para que o nosso serviço REST entenda e interprete nossas rotas, é necessário habilitar a configuração MapHttpAttributeRoutes na classe WebApiConfig. Configurando as rotas Não basta criar as rotas usando Attribute Routing. Algumas configurações são necessárias para que as rotas funcionem adequadamente. Tais configurações são apresentadas a seguir: Você pode combinar suas rotas customizadas com rotas convencionais . Para definir rotas convencionais, utilize o método MapHttpRoute .
  27. 27. Registrando as configurações de rotas Finalmente, precisamos registrar nossas configurações de rotas na aplicação. Isso é feito no arquivo Global.asax
  28. 28. Habilitando CORS CORS (Cross-Origin Resource Sharing) ou Compartilhamento de Recurso Cross-Origem é um mecanismo que define meios para um servidor permitir que seus recursos sejam acessados por uma página web de um domínio diferente. Algumas requisições são tradicionalmente limitadas a acessar o mesmo domínio. O CORS define um meio pelo qual um cliente e um servidor web podem interagir para determinar de forma segura se deve ou não haver requisições cross-origem. Saiba mais nesse link: http://www.w3.org/TR/cors/
  29. 29. Habilitando CORS Habilitar CORS no ASP.NET Web API 2 é muito simples. Uma vez habilitado, requisições AJAX de uma página web em um domínio diferente para a nossa API serão aceitos. Saiba mais nesse link: http://goo.gl/7CJg6r 1. Primeiro você precisa instalar as bibliotecas do CORS a partir do NuGet (por padrão, essas bibliotecas não são instaladas na criação do projeto).
  30. 30. Habilitando CORS Habilitar CORS no ASP.NET Web API 2 é muito simples. Uma vez habilitado, requisições AJAX de uma página web em um domínio diferente para a nossa API serão aceitos. Saiba mais nesse link: http://goo.gl/7CJg6r 2. Abra a classe WebApiConfig e faça a chamada do método EnableCors() 3. Existem vários níveis de habilitação do CORS no Web API 2. No nosso exemplo, fizemos isso no nível da aplicação. Ou seja, habilitamos o CORS na aplicação inteira.
  31. 31. Habilitando CORS Executando o mesmo código, não obtemos mais o erro de CORS e os dados são apresentados, conforme imagem a seguir:
  32. 32. Onde encontrar mais conteúdo teórico-prático?? A Internet está completa de conteúdos didáticos (outros nem tanto) para estudar ASP.NET WEB API. A seguir, apresento alguns links que podem ser consultados para aprender mais sobre os poderosos recursos que esse framework oferece. Introdução ao ASP.Net Web API http://eduardopires.net.br/2013/07/asp-net-web-api-meu-primeiro-servico-rest/ Sobre o ASP.NET WEB API 2 http://eduardopires.net.br/2013/07/asp-net-web-api-2-novidades/
  33. 33. Muito obrigado! gravatar.com/fawstoh fausto.net@live.com
  34. 34. Fontes OBS: algumas das imagens contidas nesse documento não são de minha autoria. Foram retiradas de diferentes sites da Internet, cujos links são apresentados a seguir: Introdução ao ASP.NET WEB API http://www.dotnet-tricks.com/Tutorial/webapi/VG9K040413-What-is-Web-API-and-why-to-use-it-?.html http://www.dotnet-tricks.com/Tutorial/webapi/VG9K040413-What-is-Web-API-and-why-to-use-it-?.html ASP.Net Web API 2 – O que há de novo? http://eduardopires.net.br/2013/07/asp-net-web-api-2-novidades/ http://bitoftech.net/2014/03/05/new-asp-net-web-api-2-ihttpactionresult-cors-tutorial/ ASP.Net Web API no .NET Framework 4.0 http://docs.telerik.com/data-access/developers-guide/using-web-services/asp.net-web-api/developer- guide-wcfservices-web-api-install-nuget-netframework40 ASP.Net Web API usando VS 2010 https://robertbigec.wordpress.com/2012/10/11/developing-mvc-4-web-api-with-visual-studio-2010/ Atualizado pela última vez em 04 de Maio de 2015 Fontes das Imagens: http://www.devbattles.com/ru/images/upload/VPS-JSON-Beating-XML.png http://httpresponder.com/json-xml-eg.png http://enzolutions.com/assets/img/crossdomain.png http://thebloomsdaystory.com/wp-content/uploads/2012/07/16416_MDJPG.jpg http://www.bacancytechnology.com/wp-content/themes/twentyfourteen/images/MVC.jpg https://s-media-cache-ak0.pinimg.com/736x/8a/18/94/8a1894db246529782c34092cafac2d5c.jpg http://www.austere.co.in/images/winserver+iis7.png https://www.google.com.br/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&ved=0CAc QjRw&url=http%3A%2F%2Fcode.google.com%2Fp%2Fthoth- gateway%2F&ei=GT5BVavFKuexsAS2pID4Dw&bvm=bv.92189499,d.cWc&psig=AFQjCNFyCD6j- BZA7121tFeXHKa-keiBDQ&ust=1430425441764635 https://mperaltav.files.wordpress.com/2011/11/iconos2.jpg http://www.smashingmagazine.com/images/404-error-pages/simp.gif http://emitknowledge.azurewebsites.net/wp-content/uploads/2014/12/Tag-Cloud-Web-API1.png http://www.apiacademy.co/sites/default/files/Web-APIs-v5_0.png

×