Como Criar uma Web API no Visual Studio

As APIs são componentes essenciais no desenvolvimento de sistemas modernos. Uma Web API permite que diferentes aplicações se comuniquem de forma padronizada, utilizando protocolos como HTTP e formatos de dados como JSON. Este guia apresenta um passo a passo detalhado para criar uma Web API utilizando o Visual Studio, explicando cada parte do processo para que o projeto seja criado com boas práticas e preparado para futuras expansões.

1. Criando o Projeto

O primeiro passo é criar um novo projeto no Visual Studio:

  1. Abra o Visual Studio e clique em Criar um Novo Projeto.
  2. Pesquise por ASP.NET Core Web API e selecione o template correspondente.
  3. Defina o nome do projeto, o local onde será salvo e a versão do .NET que será utilizada.
  4. Mantenha as opções padrão habilitadas, como Configurar para HTTPS e Habilitar OpenAPI/Swagger.

Após a confirmação, o Visual Studio criará toda a estrutura inicial automaticamente.

2. Estrutura do Projeto

O Visual Studio gera uma estrutura organizada com arquivos e pastas essenciais para o funcionamento da API. Os principais são:

  • Controllers: contém os controladores, que são responsáveis por gerenciar as requisições e respostas da API.
  • Program.cs: arquivo principal que inicializa a aplicação e registra os serviços utilizados.
  • appsettings.json: armazena configurações do sistema, como conexão com banco de dados, chaves de API e variáveis de ambiente.
  • WeatherForecast.cs: exemplo de modelo para retorno de dados, útil para entender a estrutura inicial de respostas JSON.

2.1. O Controller Padrão

Por padrão, o projeto inclui o arquivo WeatherForecastController.cs. Ele implementa um exemplo de endpoint GET que retorna previsões de temperatura.

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

Nesse exemplo, a API gera uma lista de cinco registros com valores aleatórios de temperatura, data e descrição.

3. Entendendo o Modelo

O arquivo WeatherForecast.cs define a estrutura dos dados retornados pela API. Ele utiliza propriedades para armazenar informações, incluindo conversão automática de Celsius para Fahrenheit.

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

Esse modelo pode ser substituído ou ampliado para refletir as necessidades reais da aplicação.

4. Métodos HTTP e Boas Práticas

Os controladores podem expor diferentes métodos HTTP, cada um com um objetivo específico:

  • GET: utilizado para consultar dados existentes.
  • POST: usado para criar novos registros.
  • PUT: responsável por atualizar dados já existentes.
  • DELETE: remove registros do sistema.

O uso correto desses métodos segue o padrão REST, facilitando a integração com aplicações externas.

5. Testando a API com Swagger

O Visual Studio inclui o Swagger por padrão, permitindo testar endpoints diretamente no navegador. Ao executar o projeto, a interface do Swagger exibe todos os endpoints disponíveis, parâmetros necessários e exemplos de respostas. Isso facilita o desenvolvimento, pois dispensa o uso inicial de ferramentas externas como Postman ou Insomnia.

6. Retorno dos Dados em JSON

O formato padrão de retorno da API é o JSON, que é amplamente utilizado por aplicações web e mobile. Exemplo de resposta:

[
  {
    "date": "2025-09-01",
    "temperatureC": 25,
    "temperatureF": 77,
    "summary": "Quente"
  },
  {
    "date": "2025-09-02",
    "temperatureC": 18,
    "temperatureF": 64,
    "summary": "Agradável"
  }
]

Esse formato facilita o consumo da API por sistemas em diversas linguagens, como JavaScript, Python, Java e PHP.

7. Criando Novos Endpoints

Além do exemplo padrão, é possível criar controladores personalizados para atender necessidades específicas. O exemplo abaixo mostra um endpoint que busca um registro pelo seu identificador:

[HttpGet("{id}")]
public IActionResult GetById(int id)
{
    var item = _service.GetById(id);
    if (item == null)
        return NotFound();

    return Ok(item);
}

8. Próximos Passos e Boas Práticas

Depois de criar a estrutura inicial, é recomendável implementar melhorias que tornem a API mais robusta e segura:

  • Conexão com Banco de Dados: utilizar o Entity Framework para criar repositórios e consultas dinâmicas.
  • Autenticação e Autorização: proteger endpoints com JWT e políticas de acesso.
  • Camada de Serviços: separar regras de negócio para manter os controladores mais limpos e organizados.
  • Paginação e Filtros: melhorar a performance ao lidar com grandes volumes de dados.
  • Versionamento: permitir que diferentes versões da API coexistam sem afetar clientes antigos.

Seguindo essas práticas, a API torna-se mais escalável, segura e preparada para integração com aplicações modernas.