Este projeto foi desenvolvido através do curso de Programação Orientada a Objetos com Java. Trata-se de um CRUD feito com Spring Boot e MongoDB.
- Implementar operações de CRUD
- Implementar associações entre objetos (objetos aninhados e referências)
- Realizar consultas com Spring Data e MongoRepository
- Spring Boot
- Java
- MongoDB
- MongoDB Compass
- Postman (para testes de API)
- Clone este repositório:
git clone https://github.com/camilazucchi/workshop-springboot3-mongodb/tree/main
- Navegue até o diretório do projeto:
cd workshop-springboot3-mongodb
- Caso necessário, configure as informações do banco de dados MongoDB no arquivo application.properties.
- É necessário ter o MongoDB e o MongoDB Compass instalado em sua máquina.
- Antes de executar o projeto é importante abrir o MongoDB Compass e realizar a conexão antes.
O projeto possui as seguintes funcionalidades:
- Listar todos os Usuários
Feita através da requisição:
http://localhost:8080/users
Retorna:
[
{
"id": "662947be1f59156c16c743aa",
"name": "Maria Brown",
"email": "maria@gmail.com"
},
{
"id": "662947be1f59156c16c743ab",
"name": "Alex Green",
"email": "alex@gmail.com"
},
{
"id": "662947be1f59156c16c743ac",
"name": "Bob Grey",
"email": "bob@gmail.com"
}
]
- Buscar Usuário por ID
Feita através da requisição:
http://localhost:8080/users/{id}
Retorna:
{
"id": "662947be1f59156c16c743aa",
"name": "Maria Brown",
"email": "maria@gmail.com"
}
- Adicionar um Usuário
Feita através da requisição:
http://localhost:8080/users
{
"name": "José",
"email": "jose@gmail.com"
}
Retorna:
[
{
"id": "662947be1f59156c16c743aa",
"name": "Maria Brown",
"email": "maria@gmail.com"
},
{
"id": "662947be1f59156c16c743ab",
"name": "Alex Green",
"email": "alex@gmail.com"
},
{
"id": "662947be1f59156c16c743ac",
"name": "Bob Grey",
"email": "bob@gmail.com"
},
{
"id": "662948b31f59156c16c743af",
"name": "José",
"email": "jose@gmail.com"
}
]
- Excluir um Usuário
Feita através da requisição:
http://localhost:8080/users/{id}
Caso não encontre o ID do usuário:
{
"timestamp": 1713981706774,
"status": "NOT_FOUND",
"error": "Not found",
"message": "User ID not found",
"path": "/users/66199602e0d05d6c83b237ea"
}
- Atualizar informações de um Usuário
Feita através da requisição:
http://localhost:8080/users/{id}
{
"name": "José Blue"
}
Retorna:
[
{
"id": "662947be1f59156c16c743aa",
"name": "Maria Brown",
"email": "maria@gmail.com"
},
{
"id": "662947be1f59156c16c743ab",
"name": "Alex Green",
"email": "alex@gmail.com"
},
{
"id": "662947be1f59156c16c743ac",
"name": "Bob Grey",
"email": "bob@gmail.com"
},
{
"id": "662948b31f59156c16c743af",
"name": "José Blue",
"email": "jose@gmail.com"
}
]
- Listar todos os Posts de um Usuário
Feita através da requisição:
http://localhost:8080/users/{id}/posts
Retorna:
[
{
"id": "662947be1f59156c16c743ad",
"date": "2024-03-21T00:00:00.000+00:00",
"title": "Partiu viagem",
"body": "Vou viajar para São Paulo! Abraços!",
"author": {
"id": "662947be1f59156c16c743aa",
"name": "Maria Brown"
},
"comments": [
{
"text": "Boa viagem!",
"date": "2024-03-21T00:00:00.000+00:00",
"author": {
"id": "662947be1f59156c16c743ab",
"name": "Alex Green"
}
},
{
"text": "Aproveite!",
"date": "2024-03-22T00:00:00.000+00:00",
"author": {
"id": "662947be1f59156c16c743ac",
"name": "Bob Grey"
}
}
]
},
{
"id": "662947be1f59156c16c743ae",
"date": "2024-03-23T00:00:00.000+00:00",
"title": "Bom dia",
"body": "Acordei feliz hoje!",
"author": {
"id": "662947be1f59156c16c743ab",
"name": "Alex Green"
},
"comments": [
{
"text": "Tenha um ótimo dia!",
"date": "2024-03-23T00:00:00.000+00:00",
"author": {
"id": "662947be1f59156c16c743ab",
"name": "Alex Green"
}
}
]
}
]
- Buscar Post por título
Feita através da requisição:
http://localhost:8080/posts/titlesearch?text=o%20
Retorna:
[
{
"id": "662947be1f59156c16c743ae",
"date": "2024-03-23T00:00:00.000+00:00",
"title": "Bom dia",
"body": "Acordei feliz hoje!",
"author": {
"id": "662947be1f59156c16c743ab",
"name": "Alex Green"
},
"comments": [
{
"text": "Tenha um ótimo dia!",
"date": "2024-03-23T00:00:00.000+00:00",
"author": {
"id": "662947be1f59156c16c743ab",
"name": "Alex Green"
}
}
]
}
]
- Buscar Posts com uma data mínima e uma data máxima
Feita através da requisição:
http://localhost:8080/posts/fullsearch?text=aproveite&minDate=2024-03-18&maxDate=2024-03-21
Retorna:
[
{
"id": "662947be1f59156c16c743ad",
"date": "2024-03-21T00:00:00.000+00:00",
"title": "Partiu viagem",
"body": "Vou viajar para São Paulo! Abraços!",
"author": {
"id": "662947be1f59156c16c743aa",
"name": "Maria Brown"
},
"comments": [
{
"text": "Boa viagem!",
"date": "2024-03-21T00:00:00.000+00:00",
"author": {
"id": "662947be1f59156c16c743ab",
"name": "Alex Green"
}
},
{
"text": "Aproveite!",
"date": "2024-03-22T00:00:00.000+00:00",
"author": {
"id": "662947be1f59156c16c743ac",
"name": "Bob Grey"
}
}
]
}
]