Uso do HATEOAS no Projeto Spring Boot - Felipe-builder/rest-conexa-challenger GitHub Wiki
Este documento descreve a implementação do HATEOAS (Hypertext As The Engine Of Application State) em um projeto Spring Boot 3.1.0. O HATEOAS é uma abordagem que permite a descoberta dinâmica de recursos por meio da navegação em links dentro das respostas da API.
Para utilizar o HATEOAS no seu projeto Spring Boot, inclua a seguinte dependência no seu arquivo pom.xml:
xml
<dependency>
<groupId>org.springframework.hateoas</groupId>
<artifactId>spring-hateoas</artifactId>
<version>2.1.1</version>
</dependency>O serviço (UserService) foi ajustado para incluir links HATEOAS nas respostas. Ao buscar um usuário por ID, um link para a própria consulta é adicionado.
java
public UserDTO findById(String id) throws Exception {
// ...
return user.add(linkTo(methodOn(UserController.class).findById(id)).withSelfRel());
}O DTO (UserDTO) foi ajustado para estender RepresentationModel e incluir um identificador (key) em vez de id.
java
public class UserDTO extends RepresentationModel<UserDTO> implements Serializable {
private UUID key;
// ...
}Ao implementar o HATEOAS no projeto, tornamos as respostas da API mais dinâmicas e navegáveis. Os links HATEOAS são adicionados para permitir a descoberta fácil de recursos relacionados. Certifique-se de seguir as práticas RESTful ao criar novos endpoints e recursos.
-
Buscar Todos os Usuários:
- Método: GET
- Endpoint: /api/v1/user
- Resposta: Lista de usuários com links para cada usuário individual.
-
Buscar Usuário por ID:
- Método: GET
- Endpoint: /api/v1/user/{id}
- Resposta: Detalhes do usuário com links, incluindo um link para a própria consulta.
-
Resultado:
-
{ "id": "46eb3cea-d202-4382-8e63-c1eb1d4c919f", "email": "[email protected]", "full_name": "Givonaldo Pereira 123", "specialty": "Cardiologista - SR", "cpf": "101.202.303-10", "birth_date": "1980-03-10", "phone": "(21) 3232-6562", "_links": { "self": { "href": "http://localhost:8080/api/v1/user/46eb3cea-d202-4382-8e63-c1eb1d4c919f" } } }
-
-
Criar Novo Usuário:
- Método: POST
- Endpoint: /api/v1/user
- Corpo da Requisição: JSON com dados do novo usuário.
- Resposta: Detalhes do usuário recém-criado com links.
-
Atualizar Usuário:
- Método: PUT
- Endpoint: /api/v1/user
- Corpo da Requisição: JSON com dados atualizados do usuário.
- Resposta: Detalhes do usuário atualizado com links.
- Resultado:
-
{ "id": "46eb3cea-d202-4382-8e63-c1eb1d4c919f", "email": "[email protected]", "full_name": "Givonaldo Pereira 123", "specialty": "Cardiologista - SR - 1", "cpf": "101.202.303-10", "birth_date": "1980-03-10", "phone": "(21) 3232-6562", "_links": { "self": { "href": "http://localhost:8080/api/v1/user/46eb3cea-d202-4382-8e63-c1eb1d4c919f" } } }
-
-
Atualizar Senha do Usuário:
- Método: PATCH
- Endpoint: /api/v1/user/{id}/password
- Corpo da Requisição: JSON com nova senha.
- Resposta: Código de status 204 No Content se bem-sucedido.
-
Excluir Usuário:
- Método: DELETE
- Endpoint: /api/v1/user/{id}
- Resposta: Código de status 204 No Content se bem-sucedido.
- Essa documentação fornece uma visão geral da implementação do HATEOAS no projeto Spring Boot. Certifique-se de manter a consistência nas práticas RESTful ao expandir a API.