Elemar DEV

Negócios, tecnologia e desenvolvimento

Asp.net Web APIs: Going RESTful?!

Olá pessoal. Tudo certo?!

Nessa semana foi disponibilizada uma versão beta do Visual Studio 11.  Além do novo visual (ainda não sei se gosto), dezenas de novas features estão disponíveis. Podemos ter um “primeiro contato” com o framework 4.5, C# 5 e com o Asp.net MVC 4.

No post de hoje, mostro “uma primeira visão” de uma excelente novidade do Asp.net MVC 4: Asp.net Web APIs. Trata-se de uma alternativa “asp.net” para desenvolvimento de serviços baseados em HTTP.

Importante: Israel Aece já escreveu excelentes posts sobre o tema em seu blog.

Antes de começar..

No post de hoje, mostro como criar uma Web API usando Asp.net MVC 4. Para isso, baixei e instalei a nova versão do Visual Studio (http://www.microsoft.com/visualstudio/11/en-us). Entretanto, você também poderá utilizar o VS2010 baixando ASP.NET MVC 4 Beta for Visual Studio 2010 (http://www.asp.net/downloads)

Começando o projeto

Se você está curioso para ver a aparência do VS11, eis a “Start Page”

image

Dentre as opções de templates para novo projeto, encontramos “Asp.net MVC 4 Web Application”. Assim como ocorre com MVC 3, essa é a única opção para iniciar um projeto MVC, independente do tipo, inclusive para Web APIs.image

Ao iniciar o projeto, um novo diálogo solicita qual o tipo de aplicação desejamos começar. Para hoje, selecionemos Web API.

image

Após poucos instantes, temos um projeto pronto para ser executado.

image

Gostaria de destar a presença de dois controllers no projeto Default. Um, é o já “tradicional” HomeController (que apresenta uma interface Web). Outro, é ValueController que expõe nosso serviço.

image

Primeira execução

Já na primeira execução, vemos uma boa novidade: as interfaces default estão muito mais bonitas.

image

Para acessar a Wep API propriamente dita, recomendo a utilização do “Developers Tools”.

image

Olhando o código de nossa Web API

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Web.Http;

namespace MyFirstWebAPI.Controllers
{
    public class ValuesController : ApiController
    {
        // GET /api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET /api/values/5
        public string Get(int id)
        {
            return "value";
        }

        // POST /api/values
        public void Post(string value)
        {
        }

        // PUT /api/values/5
        public void Put(int id, string value)
        {
        }

        // DELETE /api/values/5
        public void Delete(int id)
        {
        }
    }
}

Se você sabe um poquinho sobre http, percebe que cada um dos métodos mapeia uma verbo (GET, PUT, POST, DELETE).

ApiController mapeia esses métodos aos verbos (ele faz isso). Além disso, ele faz a conversão do conteúdo conforme o header Accept.

image

Por agora, era isso!

Smiley piscando

11 comentários em “Asp.net Web APIs: Going RESTful?!

  1. Eu estou procurando uma Lib RESTFul Cliente pra .net conhece algum?

  2. Roberto
    05/03/2012

    Como faço para consumir os serviços disponibilizados via web api em um aplicativo winforms?

    • elemarjr
      05/03/2012

      Usando APIs de consulta normais. WCF, seria minha recomendação

      • Roberto
        05/03/2012

        Quando desenvolvo um aplicativo c# desktop que necessita de acesso a um webservice, simplesmente adiciono o endereço via add web reference e tenho acesso a todas as interfaces disponibilizadas pelo web service. No entanto isto não ocorre com esta web api. Como posso referenciar este serviço diretamente?

  3. israelaece
    05/03/2012

    Boas Roberto,

    Em serviços REST isso não é possível porque ele não tem documentação (i.e. WSDL). E é ela que faz com que o VS faça toda a mágica para você. No caso de serviços REST, você pode utilizar a classe WebClient (System.Net) ou utilizar o HttpClient que a Microsoft também pretende colocar como parte “client” do Web API: http://www.israelaece.com/post/WCF-Web-API-Consumo-de-Servicos.aspx.

    Ambas as classes visam o consumo de recursos Web em em qualquer tipo de aplicações .NET, mas a segunda (HttpClient), é exclusiva para isso e traz muito mais facilitadores.

    • Roberto
      05/03/2012

      Valeu mesmo, Israel. Acho que posso seguir adiante a partir de suas dicas.

      • Roberto
        13/03/2012

        Ola, Israel.
        Já consegui fazer funcionar a parte cliente em um aplicativo winforms… agora o problema é autenticação. Toda vez que acesso algum método no web api que possui [Authorize] ele tenta desviar para a página de login da aplicação (que é mista, uma parte mvc e outra com o serviço da web api) e retorna o erro 404… como faço para autenticar e manter a autenticação entre as requisições feitas pelo cliente winforms?

  4. Pingback: Handwriting Recognition com HTML5 Canvas « Breno Ferreira

  5. Pingback: ASP.net Web APIs suporta “OData Protocol URI Conventions” « Elemar DEV

  6. Orian
    24/05/2012

    Cara desculpe minha ignorancia, mas o que sao esses caracteres que sao retornados antes e depois do xml?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Informação

Publicado às 04/03/2012 por em Post e marcado , , .

Estatísticas

  • 702,966 hits
%d blogueiros gostam disto: