01/08/2023
Neste artigo, vamos criar um aplicativo CRUD (Create, Read, Update, Delete) de TODO (Lista de Tarefas) usando ASP.NET Core. ASP.NET Core é um framework da Microsoft para construir aplicativos da web e APIs.
Antes de começarmos, certifique-se de que você tem o seguinte instalado em sua máquina:
Abra o terminal ou prompt de comando e execute os seguintes comandos:
dotnet new sln --output TODO
dotnet new webapi -n TODO.WebAPI --output TODO/src/TODO.WebAPI
cd TODO
dotnet sln add src/TODO.WebAPI
Isso criará um solução com o nome "TODO" e novo projeto Web API ASP.NET Core com o nome "TODO.WebAPI" em uma pasta "src" e adiciona na solução.
Agora, precisamos adicionar as dependências do Entity Framework ao nosso projeto. No terminal ainda na pasta TODO, execute os seguintes comandos:
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design
Esses pacotes permitirão que usemos o SQLite como banco de dados e nos forneçam as ferramentas de design do Entity Framework.
Vamos criar o modelo TODO que será mapeado para a tabela no banco de dados. Abra o arquivo "Models/Todo.cs" e adicione o seguinte código:
1using System.ComponentModel.DataAnnotations; 2 3namespace TODO.WebAPI.Models 4{ 5 public class Todo 6 { 7 public int Id { get; set; } 8 public string Title { get; set; } 9 public bool IsCompleted { get; set; } 10 } 11}
Em seguida, precisamos configurar o DbContext para que o Entity Framework possa criar e gerenciar o banco de dados para nós. Crie uma nova pasta chamada "Data" e adicione um arquivo chamado "TodoContext.cs" com o seguinte código:
1using Microsoft.EntityFrameworkCore;
2using TODO.WebAPI.Models;
3
4namespace TODO.WebAPI.Data
5{
6    public class TodoContext : DbContext
7    {
8        public TodoContext(DbContextOptions<TodoContext> options) : base(options)
9        {
10        }
11
12        public DbSet<Todo> Todos { get; set; }
13    }
14}
Agora, precisamos configurar o serviço do DbContext no arquivo "Startup.cs". Adicione o seguinte código no método ConfigureServices:
1using Microsoft.EntityFrameworkCore; 2using TODO.WebAPI.Data; 3 4// ... 5 6builder.Services.AddDbContext<TodoContext>(options => 7 options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection"))); 8 9// ...
Vamos criar os controladores que irão gerenciar as operações CRUD para a entidade TODO. Crie uma nova pasta chamada "Controllers" e adicione um arquivo chamado "TodosController.cs" com o seguinte código:
1using System.Collections.Generic;
2  using System.Linq;
3  using Microsoft.AspNetCore.Mvc;
4  using Microsoft.EntityFrameworkCore;
5  using TODO.WebAPI.Data;
6  using TODO.WebAPI.Models;
7  
8  namespace TODO.WebAPI.Controllers
9  {
10      [Route("api/[controller]")]
11      [ApiController]
12      public class TodosController : ControllerBase
13      {
14          private readonly TodoContext _context;
15  
16          public TodosController(TodoContext context)
17          {
18              _context = context;
19          }
20  
21          [HttpGet]
22          public ActionResult<IEnumerable<Todo>> GetTodos()
23          {
24              return _context.Todos.ToList();
25          }
26  
27          [HttpGet("{id}")]
28          public ActionResult<Todo> GetTodoById(int id)
29          {
30              var todo = _context.Todos.Find(id);
31  
32              if (todo == null)
33              {
34                  return NotFound();
35              }
36  
37              return todo;
38          }
39  
40          [HttpPost]
41          public ActionResult<Todo> CreateTodo(Todo todo)
42          {
43              _context.Todos.Add(todo);
44              _context.SaveChanges();
45  
46              return CreatedAtAction(nameof(GetTodoById), new { id = todo.Id }, todo);
47          }
48  
49          [HttpPut("{id}")]
50          public IActionResult UpdateTodo(int id, Todo updatedTodo)
51          {
52              var todo = _context.Todos.Find(id);
53  
54              if (todo == null)
55              {
56                  return NotFound();
57              }
58  
59              todo.Title = updatedTodo.Title;
60              todo.IsCompleted = updatedTodo.IsCompleted;
61  
62              _context.SaveChanges();
63  
64              return NoContent();
65          }
66  
67          [HttpDelete("{id}")]
68          public IActionResult DeleteTodoById(int id)
69          {
70              var todo = _context.Todos.Find(id);
71  
72              if (todo == null)
73              {
74                  return NotFound();
75              }
76  
77              _context.Todos.Remove(todo);
78              _context.SaveChanges();
79  
80              return NoContent();
81          }
82      }
83  }
Agora que a estrutura básica da aplicação está pronta, vamos executá-la. No terminal ainda na pasta TODO, e execute os seguintes comandos:
cd src/TODO.WebAPI
dotnet run
A aplicação será executada, será apresentada as informações do host.
Você pode acessar a API usando ferramentas como o Postman ou o Swagger UI. Nas novas versões da Web API o Swagger já vem configurado. Para acessar o Swagger UI, basta abrir o navegador e acessar com a URL informada no prompt. Ex: http://localhost:5026/swagger/index.html.