Web API é uma solução relativamente nova do MVC 4 que facilita a vida quando precisamos criar Web Services. Se você adora Rest vai adorar as Web APIs
Se você não sabe o que são web services clique aqui. Se não souber o que são serviços REST e não faz ideia de como eram desenvolvidos recomendo que veja os posts do Elemar Jr. clicando aqui.
Pra que e Por que?
- Caso você queira consumir dados via aplicações móveis ou até mesmo aquela sua aplicação para Windows 8 que você está morrendo de vontade de começar a desenvolver;
- Caso pretende fornecer algum suporte de APIs para outros desenvolvedores, clientes ou seja lá quem consumirem;
- Caso você queira começar a utilizar arquitetura escalável onde você pode criar seus recursos e futuramente consumi los sabe lá Deus por qualquer outra aplicação você precisará trabalhar com Web Services.
O que você precisa
Você precisa de um pacote bem bacana chamado VS11AzurePack que você encontra lá no Web Plataform Installer clicando aqui.
Prontos? Vamos lá… isso não vai demorar nada.
Crie uma nova Solution chamada “ContosoDiscos” utilizando Net Framework 4.5:
Abra seu Visual Studio 2012 Express for Web e inicie um novo projeto chamado ContosoDiscos_API:
Selecione o template Web API e clique em OK.
Criando a Model
Se você já esta habituado ao desenvolvimento de aplicações usando MVC 3 irá reparar que não há nenhuma novidade nos passos à seguir.
Clique com o botão direito sobre a pasta Models / Add / Class e desta forma vamos escrever nossa model:
namespace ContosoDiscos_API.Models
{
public class Disco
{
public int Id { get; set; }
public string Titulo { get; set; }
public string Artista { get; set; }
public double Valor { get; set; }
}
}
Agora que temos uma model definindo a nossa entidade Discos vamos construir nosso Controller.
using ContosoDiscos_API.Models;
public class DiscosController : ApiController
{
/// <summary>
/// Para fins de teste podemos trabalhar somente com um vetor contendo alguns discos
/// </summary>
Disco[] discos = new Disco[]
{
new Disco { Id = 1, Titulo = "Ride the Lightning", Artista = "Metallica", Valor = 50 },
new Disco { Id = 2, Titulo = "Kill´Em All", Artista = "Metallica", Valor = 50 },
new Disco { Id = 3, Titulo = "St. Anger", Artista = "Metallica", Valor = 39 }
};
public IEnumerable<Disco> BuscaTodosDiscos()
{
return discos;
}
public Disco BuscaDisco(int id)
{
var disco = discos.FirstOrDefault((p) => p.Id == id);
if (disco == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return disco;
}
public IEnumerable<Disco> BuscaDiscoArtista(string artista)
{
return discos.Where((p) => string.Equals(p.Artista, artista, StringComparison.OrdinalIgnoreCase));
}
}
O Controller é responsável pela nossa lógica de negócio e nesse caso o método assume automáticamente uma URI por onde receberá os dados de nossos discos no formato JSON.
No próximo post vamos gerar as Views onde as informações erão consumidas e exibidas para o usuário. Já que as informações serão passadas via JSON por que não consumir essas informações em uma aplicação windows forms?!
Até a próxima