API REST com Java e Spring Boot (Parte 4)
Um passo a passo para você aprender a fazer uma API REST com Java e Spring Boot do começo ao fim — Parte 4: Métodos PUT e DELETE
Esta é a parte 4 da série API REST com Java e Spring Boot. Se você chegou direto aqui, comece pela parte 1.
A fim de termos um CRUD completo, nesta parte faremos a implementação do “U” —update (atualizar) — e do “D” — delete (remover).
Tal como fizemos com o Create (criar) e com o Read (ler), a implementação aqui também é bastante simples. Como já explicamos o que é um DTO e como se dá a transferência dos dados entre as camadas (controller, service e repository), vamos nos reter aqui à criação dos métodos no Service e como eles serão chamados no Controller.
Método PUT
Na classe UserService, vamos chamar o nosso método de atualização de updateById, que retorna um UserDto. Ele recebe como parâmetros um UserUpdateForm e o id. Precisamos de um novo DTO, específico para o update, pois nossa aplicação permitirá que o usuário modifique apenas seu nome e seu e-mail, mas não seu CPF e nem sua data de nascimento.
Desse modo, criamos então a classe UserUpdateForm com apenas os atributos necessários e as anotações do Lombok e da Validation.
Voltando à classe de serviço, vemos que o método updateById primeiramente realiza algumas verificações e coloca os novos valores aos atributos a serem alterados. Depois, com o mesmo método save do Repository — o qual já usamos no método createUser — salvamos os dados no banco e retornamos o UserDto atualizado.
Por fim, na classe do Controller basta utilizarmos a anotação @PutMapping sobre o método e passar como parâmetro o caminho. Esse método, também chamado de updateById, recebe os mesmos parâmetros que vimos no Service, porém agora com o @RequestBody e o @PathVariable, que já foram explicados anteriormente. Depois só precisamos retornar o UserDto que foi criado, utilizando para isso o userService.
Método DELETE
Remover um usuário é bastante simples. Como não adicionaremos informação no banco, não precisamos criar um novo DTO. Para deletar um usuário com base em seu id, basta utilizarmos o método existsById (para verificar se o id passado existe) e então remover o objeto que possui esse id com o método deleteById. Ambos os métodos já vêm prontos do Repository.
Feito isso, é só criarmos o nosso método deleteById do Service em nosso Controller e passar o id como parâmetro. Não podemos esquecer da anotação @DeleteMapping com o caminho e a @PathVariable no parâmetro.
Pronto. Fazendo esses pequenos ajustes, já temos agora o nosso CRUD completo. Podemos criar um novo usuário no banco de dados, podemos resgatar os dados e ler as informações, podemos atualizar os dados e, por fim, podemos remover usuários com base no id.
É claro que seria possível fazer muitas melhorias no código, deixá-lo mais limpo e até com lógicas mais bem elaboradas e interações melhores com o cliente. Mas para nossos objetivos aqui, isso já está de bom tamanho.
Na próxima etapa, Parte 5, faremos os testes de todos os métodos no Postman.
Você pode ver o código completo no GitHub.
Está entrando no mundo da programação? Uma boa dica para iniciar seus estudos são os livros Lógica de Programação – JavaScript e HTML e Entendendo Algoritmos – guia ilustrado.
Está interessado em consumir uma API externa? Veja o artigo Consumindo API com Java, Spring Boot e Gradle.
Quer saber mais sobre APIs REST? Leia nosso artigo sobre as 9 melhores práticas!