Ja precisou criar, no ASP.NET Core, um projeto WebAPI e percebeu que vem o incoveniente do Razor? Veja aqui como criar um projeto ASP.NET Core WebApi sem MVC, apenas com controllers, e nada mais.

Por vezes gosto de criar projeto de WebAPI, mas sem trazer qualquer referência à Razor, TagHelper, ViewFeatures, Localization, Optimization, Bundles, etc. Quando ainda no .NET Framework, tínhamos a opção de criar projetos web com MVC – que referenciava para Sytem.Web.Mvc, e fazia todo bootstrap com Razor, Views Renders, Optimization, Bundles, etc – ou apenas WebApi – que trazia apenas Controlers, Routers, JsonFormatters e CORS – para criar um serviço RESTfull, e nada mais.

Na versão atual do ASP.NET Core 1.1, quando criamos um novo projeto, seja via Command Line ou via Template no Visual Studio, mesmo forçando que queremos apenas um projeto WebAPI, ele ainda faz referencias à bibliotecas que não são interessantes para um serviço RESTful.

ASP.NET Core WebApi Bad Template ASP.NET Core WebApi Dirty Project

 

Criando um projeto ASP.NET Core WebAPI sem MVC

Opção 1 | Manualmente

Passo 1 | Adicionando referencias

Primeiramente, inicia um novo projeto ASP.NET Core vazio – Empty.

ASP.NET Core Empty Project

Dessa forma será referencia apenas as bibliotecas NETCore e AspNetCore.

ASP.NET Core WebApi NuGet Dependencies

Mas, nada de Razor, Tags ou Views. Ótimo!

Agora, basta editarmos o csproj e adicionarmos as referencias como abaixo:


<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="1.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="1.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Cors" Version="1.1.3" />
</ItemGroup>

Salve e aguarde o Visual Studio restaurar todos os pacotes. Assim que finalizar, podemos continuar com as alterações no Startup.

Passo 2 | Alterando o Startup.cs

Faça as seguintes alterações no seu Startup.cs.


public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore()
.AddAuthorization()
.AddJsonFormatters()
.AddCors();
}

E também:


public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IHttpContextAccessor accessor)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
app.UseMvc(routes => {
routes.MapRoute({
name: "default",
template: "{controller}/{action}/{id?}");
});
}

Faça um build e vamos para o próximo passo.

Passo 3 | Criando controllers

Com o bootstrap ja feito, vamos criar o primeiro controller para validar o projeto.

Crie o seguinte arquivo no seu projeto no caminho Controllers/ValuesController.cs:


[Route("api/[controller]")]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public IActionResult Get()
{
return Ok(new string[] { "value1", "value2" });
}
}

ASP.NET Core WebApi RESTful service

E está feito! Um projeto genuinamente apenas com WebAPI, sem qualquer referencia à bibliotecas especificas para Views.

Opção 2 | Usando um project template

Deixo aqui o link para que possam fazer o download e instalar no seu Visual Studio um project template para ASP.NET Core WebAPI. Assim fica bem mais fácil, certo?

ASP.NET Core WebApi Project Template

Download Project Template: ASP.NET Core WebAPI.vsix. Não esqueça de renomear para extensão .vsix.

[mc4wp_form id="3070"]

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts

.NET Framework

Semver – Versionamento Semantico

Desenvolver software com responsabilidade está cada vez mais importante e valorizado. Controle de qualidade de software, seja através de boa escrita de código com devidas revisões, com bons fluxos de trabalho e promoção de alterações, Read more…

JavaScript

Como é aprender JavaScript em 2016

Este texto é só uma opinião, e como qualquer estrutura de JavaScript, não deve ser levada muito a sério. Nenhum framework JavaScript foi criado durante a tradução deste artigo. Opa, peguei um novo projeto web, mas Read more…

.NET Framework

Porque evitar DataTable e DataSet

Trabalho com ASP.NET desde sua primeira versão, em 2003, ainda no modelo WebForms e arquitetura distribuído em camadas estruturado escrito com projetos de acesso à dados. E, claro, sempre achei que era uma boa ideia Read more…