Forem

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

Posted on

1

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)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay