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.
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)
Se você está curioso para ver a aparência do VS11, eis a “Start Page”
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.![]()
Ao iniciar o projeto, um novo diálogo solicita qual o tipo de aplicação desejamos começar. Para hoje, selecionemos Web API.
Após poucos instantes, temos um projeto pronto para ser executado.
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.
Já na primeira execução, vemos uma boa novidade: as interfaces default estão muito mais bonitas.
Para acessar a Wep API propriamente dita, recomendo a utilização do “Developers Tools”.
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.
Por agora, era isso!
![]()
Eu estou procurando uma Lib RESTFul Cliente pra .net conhece algum?
alexsandro:
http://restfulie.caelum.com.br/
Como faço para consumir os serviços disponibilizados via web api em um aplicativo winforms?
Usando APIs de consulta normais. WCF, seria minha recomendação
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?
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.
Valeu mesmo, Israel. Acho que posso seguir adiante a partir de suas dicas.
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?
Pingback: Handwriting Recognition com HTML5 Canvas « Breno Ferreira
Pingback: ASP.net Web APIs suporta “OData Protocol URI Conventions” « Elemar DEV
Cara desculpe minha ignorancia, mas o que sao esses caracteres que sao retornados antes e depois do xml?