Um Projeto Spring Boot - P5.2

fllaviacorreia

Flávia Correia

Posted on January 5, 2023

Um Projeto Spring Boot - P5.2

Faala pessoal! Tudo bem?

Estou de volta para mais um post sobre o projeto Rest API e para relembrar sobre o que já foi mostrado, deixo essa lista dos articles já publicados:

Continuando com o tutorial do último post:


Adicionando anotação para URI

Para deixar o código mais organizado, adicionei uma anotação chamada RequestMapping e passei por parâmetro a URI da classe de controle e removi a anotação GetMapping do GET ALL editoras:

request mappind add

Isso é bom porque ajuda a fazer uma manutenção mais fácil, por exemplo, se a classe de controle de usuários tivesse 100 métodos de manipulação e a URI fosse "users_controller", caso decidisse mudar para apenas "users", ou sairia removendo o "-controller" nos 100 métodos, ou daria um "Localizar + Substituir" correndo o risco de alterar alguma informação no código.


GET ONE

O método para buscar todas as editoras já está pronto. Agora, podemos fazer um método que retorne uma editora em específico de acordo com o ID dessa editora.

Aqui nesse ponto, podemos usar Response Entity que nos dá a possibilidade de manipular o cabeçalho, outras coisas, e o que será usado aqui será a modificação do status, sendo alguns deles que mais usarei:

  • 200 OK
  • 404 Not Found
  • 201 Created
  • 204 No Content

Aqui você pode ver mais sobre os códigos de status de respostas HTTP.

O código mais enxuto de retorno de uma editora pode ser escritode 2 formas:

método get one v1

Esse é um método que recebe um id pela URI (por isso a anotação @PathVariable) e que, faz a busca pelo id, mapeia a editora e retorna com status OK(200) incluindo a editora encontrada. Caso não encontre, cai no orElse e retorna a construção de um Not Found (404).

método get one v2

Já nessa segunda versão, o map desse método atua da mesma forma que o primeiro, porém a construção é mais enxuta

Uma terceira versão, menos enxuta, pode ser construída da seguinte forma:
método get one v3


GET BY NAME

Uma terceira forma de consulta é pelo nome, por exemplo.

Um modo simples é usando o Query Methods do JPA, então na Interface repository de editora. Utilizando esse tipo de Query, tem que seguir algumas regras:

  1. iniciar o método com find ou query
  2. utilizar o By
  3. se for a busca por propriedade, colocar o nome na classe Model da propriedade: por exemplo, na Model de Users tem um atributo chamado nome, na Interface ficaria:

List<Users> findByNome(String nome)

Uma outra palavra reservada que pode ser utilizada é o Containing no final do nome do método na Interface, que faz a busca em todas as linhas do banco que contém o conjunto de caracteres passados, ele equivale ao Like em query de DB SQL.

List<Users> findByNomeContaining(String nome)

OBS.: O JPA implementa esses métodos em tempo de execução, então não precisa implementá-los.

A passagem do dado a ser buscado pode ser:

  1. pela URI, como o id e ai usa a anotação @PathVariable;
  2. pelo corpo da requisição e ai usa a anotação @RequestBody como é usado na criação e edição.

POST

Na imagem abaixo, temos o método para salvar uma nova editora no banco de dados:

método de cadastro de editora

A anotação @PostMapping indica que aquele método deve ser usado quando uma requisição do tipo POST é iniciada;
A anotação @RequestBody com o status CREATED modifica o status de resposta para 201,
Esse método retorna os dados da editora cadastrados juntamente com o ID.

Essa é apenas uma opção, poderia retornar apenas o id com: pCompanyRepository.save(pCompany).getId()

Poderia retornar uma mensagem de sucesso, ou apenas o status. Por ora vamos deixar assim.


PUT

método put

O método de edição é muito parecido com a criação, apenas com alguns detalhes a mais, como na imagem, na ediçção primeiro verifiquei se aquela editora está cadastrada no banco de dados, caso não esteja, retorna o erro 404.

Caso exista:

  1. seta o ID no objeto editora que veio na requisição;
  2. quando chama o save, pelo fato do atributo ID não estar vazio, o JPA vai entender que precisa editar ao invés de salvar uma nova linha no banco.
  3. no final, há o retorno da editora editada com status 200.

DELETE

método delete

A deleção é bem simples também, há verificação de existência de editora, em seguida remove a editora através do ID e retorna o corpo da requisição vazio com o status 204.


Bom pessoal, por hoje é isso, o repositório no GitHub pode ser acessado por aqui.

Até a próxima!

💖 💪 🙅 🚩
fllaviacorreia
Flávia Correia

Posted on January 5, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Um Projeto Spring Boot - P5.2
java Um Projeto Spring Boot - P5.2

January 5, 2023