DEV Community

Cover image for Um Projeto Spring Boot - P5.2
Flávia Correia for Devs Jequié

Posted on

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!

Top comments (0)