Inicie o Visual Studio 2015
Neste post estou utilizando a versão:Caso não tem o Visual Studio 2015, baixe aqui.
Microsoft Visual Studio Ultimate 2015 Preview
Version 14.0.22310.1 DP
Microsoft .NET Framework
Version 4.5.53349
Inicie um novo projeto “ASP.NET 5 Starter Web” conforme prints abaixo:
Entendendo o projeto ASP.NET 5 Starter Web
O projeto inclui os seguintes arquivos de configuração já devidamente:- global.json : contém configurações da solução e permite referências entre projetos
- project.json : contém configurações do projeto
- packages.json: contém configurações para os pacotes NPM
- Startup.cs : contém código de inicialização e configurações que detalharei abaixo
Project.json
O Project.json tem as seguintes definições [2]:- Dependencies (Dependências): que são definidos por nome e versão e no Visual Studio tem ajuda do intellisense conforme prints abaixo
- Configurations (Configurações): são grupos de configurações para compilações do projeto. Há 2 por padrão (Debug, Release), mas outros podem ser criados
- Frameworks: definições de versão da framework a ser utilizada
- Sources (Fontes): Define quais arquivos devem ser incluídos e compilados
- WebRoot (Raiz web): Define qual o diretório raiz da aplicação que é público na web
- Commands: comandos que podem ser executados através da linha de comando (No caso do Windows o cmd.exe) e que precisam de prévia instalação do KVM (K Version Manager) [3]
Startup
A classe Startup definida no arquivo startup.cs contém a definição de pipeline de requisição do ASP.NET. Ela substitui o Global.asa e Global.asax existentes em versões anteriores, conforme Shawn Wildermuth [4].No construtor Startup são carregadas as informações de configurações do config.json e de ambiente. O config.json também substitui o antigo web.config.
Há dois outros métodos:
- ConfigureServices: configura as injeções de dependências
- Configure: configura a aplicação, inclusive entre os diferentes ambientes
Entendendo a configuração do Web Api
Para usar o Web API é necessário adicionar a dependência do AspNet.MVC 6. Neste exemplo há disponível a versão "6.0.0-beta1".Depois no Startup.cs é necessário adicionar o seguinte using:
using Microsoft.Framework.DependencyInjection;
Depois configure o MVC conforme abaixo:
public void ConfigureServices(IServiceCollection services)
{
// Add MVC services to the services container.
services.AddMvc();
E configure o uso do MVC conforme abaixo:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory)
{
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});
Adicionando o Web Api
Iremos criar um Web Api expondo uma lista de tarefa. Para isso, precisamos criar a classe modelo TodoItemhttps://github.com/mqueirozcorreia/MVC6WebApi01Sample/blob/master/src/MVC6WebApi01/Models/TodoItem.cs
Depois vamos criar a interface ITodoRepository do repositório de Todo.
https://github.com/mqueirozcorreia/MVC6WebApi01Sample/blob/master/src/MVC6WebApi01/Models/ITodoRepository.cs
Depois vamos implementar o repositório.
https://github.com/mqueirozcorreia/MVC6WebApi01Sample/blob/master/src/MVC6WebApi01/Models/TodoRepository.cs
Finalmente, vamos implementar o TodosController
https://github.com/mqueirozcorreia/MVC6WebApi01Sample/blob/master/src/MVC6WebApi01/Controllers/TodosController.cs
Repare que o Controller criado utiliza a injeção de dependência pelo construtor, conforme abaixo:
private readonly ITodoRepository _repository;
public TodosController(ITodoRepository repository)
{
_repository = repository;
}
Para que essa injeção de dependência funcione, precisamos antes configura-la no Startup.ConfigureServices, conforme abaixo:
// Injeções de dependência da aplicação
services.AddSingleton<ITodoRepository, TodoRepository>();
}
Visualizando o Web Api
Feitas todas as configurações e codificações, execute a aplicaçãoUm navegador será aberto e adicione ao fim da Url o caminho do serviço do TodosController:
http://localhost:59304/api/todos
A porta (59304), pode variar conforme configurações do seu projeto.
A requisição da url acima vai acionar o método TodosController. GetAll e mostrar o resultado abaixo em formato XML:
Há vários plug-ins para ajudar a testar serviços Rest como o Rest Easy do Firefox e o Postman do Chrome. Com ele é possível configurar por exemplo o cabeçalho “Accept” para informar que aceita “application/json” e ver que o Web Api faz o retorno adaptado para JSON, se fazer nenhuma alteração no código da aplicação:
Veja o fonte final:
https://github.com/mqueirozcorreia/MVC6WebApi01SampleReferências
1. http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-62. https://github.com/aspnet/Home/wiki/Project.json-file
3. http://www.asp.net/vnext/overview/aspnet-vnext/vc#cnp
4. http://wildermuth.com/2015/03/02/A_Look_at_ASP_NET_5_Part_2_-_Startup