Criando nosso primeiro serviço REST com SpringBoot – Parte 3

Introdução

Essa é a terceira parte deste tutorial, caso não esteja acompanhando, pode acessar as outras partes em:

Criando nosso primeiro serviço REST com SpringBoot – Parte 1

Criando nosso primeiro serviço REST com SpringBoot – Parte 2

Spring Data Rest

O Spring nos fornece uma biblioteca que também automatiza o nosso trabalho de criação de serviços rest. É o spring-data-rest. Para ver ela em ação basta adicionar a seguinte dependência em nosso pom.xml.

E remover ou comentar os métodos criados em nossa classe BookController

Podemos agora executar novamente nosso projeto e chamar a url:

Perceba que o método funcionará apesar de não termos disponível nenhum método em nossa Controller mapeado para o esse endpoint. Veja que o resultado será um pouco diferente do apresentado anteriormente (Veja parte 2 desse tutorial):

Isso acontece, porque o Spring Data Rest utiliza o HATEOAS por padrão para geração das respostas REST. O HATEOAS, é uma das principais constraints arquiteturais do REST e possibilita a navegação entre recursos, que são representações dos modelos de negócio da aplicação.

Quando adicionamos a dependência do Spring Data Rest em nossa aplicação, automaticamente ele expõe todos os nossos Repositórios (@Repository em conjunto com a herança de JPARepository em nosso projeto) como se fossem endpoints para nossa api. Dessa forma sem precisarmos definir os métodos já teremos todas as operações básicas do CRUD exportadas para o nosso projeto.

Além de fornecer outros endpoints como:

Vamos analisar os dois trechos abaixo:

O primeiro bloco nos informa qual o link do endpoint chamado, nos mostrando que é possivel passar três parametros via request: page, size, sort. Vamos analisar a estrutura do PagingAndSortingRepository e da CrudRepository qye são herdadas pela JPARespository, e que nos ajudará entender melhor:

O método Page findAll(Pageable pageable); recebe um Pageable. Vamos ver uma implementação do Pageable, chamado PageRequest.

O PageRequest recebe os parametros de pagina, tamanho da pagina e parametros de ordenação, que serão executados automaticamente quando um comando como o abaixo for executado:

O bloco final page foi alterado:

Trazendo as informações atualizadas auxiliando no controle de paginas pelo software que estiver consumindo nossa api.

Implementando consultas personalizadas

Vamos adicionar métodos ao nosso Repositório, alterando a nossa classe BookRepository conforme o bloco abaixo:

Agora podemos executar novamente nosso projeto e chamarmos a url

Como podemos observar novos endpoints foram adicionados a nossa api.

Inserindo dados

Vamos testar novamente a chamada do método de inserção, agora utilizando o SpringDataRest. Como ele já cria os endpoints, vamos apenas chamar o nosso serviço usando o comando curl, (caso não tenha baixe através do link Curl Download, ou usar um plugin de teste de API Rest para o Chrome, como por exemplo o Yet Another REST Client ou outro)

Veremos que o resultado será um pouco diferente daquele obtido na parte 2 deste tutorial.

Podemos agora chamar novamente o nosso método de listagem e teremos o nosso resultado atualizado:

Leave a Reply

Pin It on Pinterest