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.