1
resposta

[Projeto] Desafio: criando um gerador de frases aleatórias

Desafio: Integração de API com Front-End Objetivo: Criar uma API RESTful com Spring Boot para gerenciar uma lista de tarefas (To-Do List), integrando com um front-end React.

Etapas sugeridas para resolver o desafio: Criação do Projeto no Spring Initializr

Dependências: Spring Web, Spring Data JPA, H2 Database, Lombok, Spring Boot DevTools.

Modelagem da Entidade

java Copiar Editar @Entity public class Tarefa { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String descricao; private Boolean concluida; } Repositório

java Copiar Editar public interface TarefaRepository extends JpaRepository<Tarefa, Long> {} Controller

java Copiar Editar @RestController @RequestMapping("/tarefas") @CrossOrigin(origins = "*") // Libera para o front consumir public class TarefaController {

@Autowired
private TarefaRepository repository;

@GetMapping
public List<Tarefa> listar() {
    return repository.findAll();
}

@PostMapping
public Tarefa salvar(@RequestBody Tarefa tarefa) {
    return repository.save(tarefa);
}

@PutMapping("/{id}")
public Tarefa atualizar(@PathVariable Long id, @RequestBody Tarefa tarefa) {
    tarefa.setId(id);
    return repository.save(tarefa);
}

@DeleteMapping("/{id}")
public void deletar(@PathVariable Long id) {
    repository.deleteById(id);
}

} Testar com Front-End

Clone o projeto React fornecido.

Rode a API no backend (localhost:8080) e o front no localhost:3000.

Verifique se a comunicação funciona, e se consegue listar, adicionar, atualizar e remover tarefas.

1 resposta

Oi, Camila! Como vai?

Gostei bastante da forma como você estruturou o CRUD no controller, ficou bem organizado e direto, o que facilita bastante a integração com o front-end React. Sua aplicação está muito bem alinhada com o desafio proposto.

Uma dica interessante para o futuro é utilizar o método Optional do Java para tratar buscas de entidades por ID, evitando NullPointerException. Veja este exemplo:


@GetMapping("/{id}")
public ResponseEntity<Tarefa> buscarPorId(@PathVariable Long id) {
    return repository.findById(id)
            .map(ResponseEntity::ok)
            .orElse(ResponseEntity.notFound().build());
}

Este código evita erros caso a tarefa não seja encontrada.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!