ASP.NET Web API – Criando e consumindo dados [Parte 2]

Services

gg_mobile_japonNesta segunda parte do artigo vamos focar no consumo do serviço bem como em enteder algumas das nuances que fazem do ASP.NET Web API uma tecnologia com inúmeras possibilidades dentro do cenário atual.

Agora vamos criar uma aplicação console para consumir o serviço que criamos no post anterior. O código fonte está disponível no fim do post.

Crie um novo projeto Console Application. Neste exemplo estou nomeando como AspNetWebApiCliente. É válido salientar que estou utilizando o Visual Studio 2013 RC, mas já realizei o mesmo teste no Visual Studio 2012 seguindo exatamente os mesmos passos.

001

Clique com o botão direito sobre o projeto recém criado e selecione Manage NuGet Packeges…

002

Na tela que se segue selecione a opção para os pacotes Online e pesquise por Microsoft ASP.NET Web API Client Libaries. Realize a instalação e vamos estar prontos para realizar nossos testes.

O próximo passo é adicionar os seguintes namespaces:

    • using System.Net.Http;
    • using System.Net.Http.Headers;

Agora precisamos iniciar o cliente HTTP, definir o endereço base para o consumo e definir o cabeçalho da requisição para retorno como JSON.

04

Vamos criar nossa classe de Customer para a representação do objeto no lado do cliente. Sendo assim certifique-se que a definição da classe é a mesma que a do lado o servidor. Clique com o botão direito sobre o projeto, Add e Class… Crie uma classe chamada Customer. E insira o seguinte trecho de código:

06

Se esta é a primeira vez que você usou ou olhou um código no Visual Studio 2013 RC e está estranhando este “0 references”, fique tranquilo que já preparei um post para esplicar este recurso que é algo bem interessante. Mas vamos em frente…

 

Buscando todos os Customers (HTTP GET)

Nosso primeiro método vai listar todos os Customers, ler o serviço e exibir na tela o resultado. Para isso estamos buscando os registros utilizando o método GetAsync da classe HttpClient passando como parâmetro a entidade a ser pesquisada. Após buscar os registros com sucesso, vamos realizar a leitura dos dados em formato JSON usando o método Conent.ReadAsAsync() da classe HttpResponseMessage. Como no código abaixo:

07

segue o resultado:

getall

OBS: Alguém já viu alguma família Arquibaldo por aqui no Brasil??? kkk

 

Inserindo um Customer (HTTP POST)

Para inserir um registro, que no nosso caso será um customer, precisamos criar o Customer a ser inserido e executar o método PostAsJsonAsync da classe HttpClient passando nosso objeto Customer como parâmetro. Caso tudo tenha ocorrido com sucesso exibimos o código e o status correspondente.

08

Segue o resultado:

created

Se pesquisarmos pelo nosso ID diretamente no browser vamos ter o xml de retorno como abaixo:

10

 

Alterando um Customer (HTTP PUT)

Para alterar um registro iremos utilizar a mesma lógica da inserção só que utilizando o método PutAsJsonAsync:

update

Segue o resultado :

13

Ao pesquisarmos novamente vamos ter o seguinte retorno:

11

 

Excluindo um Customer (HTTP DELETE)

Para excluir um customer é só utilizar o método DeleteAsync passando como parâmetro a URI do recurso a ser excluído:

delete

Se a sua entidade tiver um ID com valor inteiro, basta apenas informar a URI como se segue: “customerID/1”.  Isso por conta da engine de roteamento. Ela procura dentro do controller os métodos correspondentes e verifica o parâmetro esperado.

O resultado retornado como Status vai ser um 200 (OK). Sendo assim acabamos de excluir nosso registro.

Neste momento já estamos consumindo os recursos que criamos no post anterior.

O código fonte deste exemplo pode ser baixado clicando aqui!

 

No próximo post vou abordar sobre a arquitetura do ASP.NET Web API bem como trazer uma análise sobre questões referentes ao Consumo, Routing e Host.

 

Até mais e bom estudo a todos!

Me Azul

Twitter: @vitormeriat

vitormeriat@gmail.com

vitor.pereira@studentpartner.com


Author's profile picture

Vitor is a computer scientist who is passionate about creating software that will positively change the world we live in.

MVP Azure - Cloud Architect - Data science enthusiast


4 minutes to read