Como Criar uma Web API no Visual Studio

Criando sua Primeira Web API com ASP.NET Core e Visual Studio 2022

Neste tutorial completo, vamos explorar como criar uma Web API funcional utilizando ASP.NET Core e Visual Studio 2022. Perfect para quem está começando no desenvolvimento backend com .NET!

Por que usar Web API?

Vantagens das APIs RESTful

  • Desacoplamento: Frontend e backend independentes
  • Escalabilidade: Fácil de escalar horizontalmente
  • Multiplataforma: Qualquer cliente pode consumir (web, mobile, desktop)
  • Manutenção: Atualizações independentes para cada parte do sistema

Configuração Inicial do Projeto

Passo a passo de criação:

  1. Abra o Visual Studio 2022
  2. Selecione “Create a new project”
  3. Escolha “ASP.NET Core Web API”
  4. Nomeie o projeto (ex: “WebApiTutorial”)
  5. Configure as opções:
  • Framework: .NET 6.0 ou superior
  • Authentication: None (para simplificar)
  • Configure for HTTPS: Sim
  • Enable OpenAPI support: Sim (para Swagger)

Estrutura do Projeto Gerada

Arquivos principais:

  • Program.cs: Ponto de entrada da aplicação
  • appsettings.json: Configurações da aplicação
  • Controllers/: Pasta para os controladores
  • WeatherForecast.cs: Modelo de exemplo
  • WeatherForecastController.cs: Controlador de exemplo

Entendendo os Componentes

Model (WeatherForecast.cs)

public class WeatherForecast
{
    public DateTime Date { get; set; }
    public int TemperatureC { get; set; }
    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
    public string? Summary { get; set; }
}

Controller (WeatherForecastController.cs)

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        // Lógica para retornar dados
    }
}

Personalizando o Endpoint

Modificando o método GET existente:

[HttpGet("all")]
public IEnumerable<WeatherForecast> GetAll()
{
    var summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", 
        "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    var forecast = new List<WeatherForecast>();

    for (int i = 0; i < summaries.Length; i++)
    {
        forecast.Add(new WeatherForecast
        {
            Date = DateTime.Now.AddDays(i),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = summaries[i]
        });
    }

    return forecast;
}

Testando a API com Swagger

Benefícios do Swagger:

  • Documentação automática dos endpoints
  • Teste interativo diretamente no navegador
  • Detalhes completos dos métodos e parâmetros

Como acessar:

  1. Execute a aplicação (F5)
  2. Navegue até /swagger
  3. Explore os endpoints disponíveis
  4. Teste as requisições diretamente pela interface

Próximos Passos Recomendados

1. Adicionar Autenticação

// Exemplo básico de autenticação JWT
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = Configuration["Jwt:Issuer"],
            ValidAudience = Configuration["Jwt:Audience"],
            IssuerSigningKey = new SymmetricSecurityKey(
                Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
        };
    });

2. Conectar com Banco de Dados

// Entity Framework Core
services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

3. Implementar CRUD Completo

  • POST: Criar novos recursos
  • GET: Recuperar recursos
  • PUT: Atualizar recursos existentes
  • DELETE: Remover recursos

4. Adicionar Validações

public class Product
{
    [Required]
    [StringLength(100)]
    public string Name { get; set; }

    [Range(0.01, 1000)]
    public decimal Price { get; set; }
}

Dicas de Boas Práticas

1. Versionamento de API

[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/[controller]")]

2. Logging

public class WeatherForecastController : ControllerBase
{
    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }
}

3. Tratamento de Erros

app.UseExceptionHandler("/error");
app.UseStatusCodePagesWithReExecute("/error/{0}");

4. Documentação Adicional

/// <summary>
/// Obtém previsão do tempo para os próximos dias
/// </summary>
/// <response code="200">Retorna a lista de previsões</response>
/// <response code="500">Erro interno do servidor</response>
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]

Conclusão

Criar uma Web API com ASP.NET Core é incrivelmente simples e poderoso. O framework oferece:

  • Produtividade: Ferramentas integradas e templates
  • Performance: Alto desempenho e eficiência
  • Segurança: Recursos built-in para proteção
  • Flexibilidade: Fácil integração com outros serviços

Pronto para começar? O Visual Studio Community 2022 oferece tudo que você precisa gratuitamente para desenvolver APIs profissionais!

Este tutorial cobre os fundamentos para você começar sua jornada no desenvolvimento de APIs com .NET. Explore a documentação oficial para recursos avançados!