AdoPet - Aplicação Java para realizar gerenciamento de abrigos de animais, cadastro de pets e tutores
API REST responsavel por realizar operações de buscas e escritas em banco de dados MySQL e retornar os dados em JSON.
Fornece endpoints para listar, cadastrar, detalhar e realizar operações específicas em relação a abrigos, adoções, pets e tutores.
- Java Development Kit (JDK) versão 17
- IDE Java (como Eclipse ou IntelliJ) ou um editor de texto para escrever o código
- Fazer download das dependências e plugins utilizando maven
- MySQL instalado localmente ou container Docker com MySQL
- Postman (opcional, para testar os endpoints localmente)
# clonar repositório
git clone https://github.com/ArturWood/api-adopet.git
# entrar na pasta do projeto
cd api-adopet
# executar o projeto
./mvnw spring-boot:run
A aplicação expõe os seguintes endpoints:
-
AbrigoController
/abrigos
GET
: Retorna uma lista paginada de abrigos.POST
: Cadastra um novo abrigo com as informações fornecidos no corpo da solicitação.GET /{id}
: Retorna detalhes de um abrigo específico.GET /{id}/pets
: Retorna uma lista paginada de pets pertencentes a um abrigo específico.POST /{id}/pets
: Cadastra um novo pet em um abrigo específico com as informações fornecidos no corpo da solicitação.
-
AdocaoController
/adocoes
POST
: Solicita uma adoção.GET /{id}
: Retorna detalhes de uma adoção específica.PUT /aprovar
: Aprova uma solicitação de adoção.PUT /reprovar
: Reprova uma solicitação de adoção.
-
PetController
/pets
GET
: Retorna uma lista paginada de pets.GET /{id}
: Retorna detalhes de um pet específico.
-
TutorController
/tutores
POST
: Cadastra um novo tutor com as informações fornecidos no corpo da solicitação.PUT
: Atualiza informações de um tutor com as informações fornecidos no corpo da solicitação.GET /{id}
: Retorna detalhes de um tutor específico.
O projeto possui a seguinte estrutura de arquivos:
├───src
│ ├───main
│ │ ├───java
│ │ │ └───com
│ │ │ └───dev
│ │ │ └───api.adopet
│ │ │ ├───controller
│ │ │ ├───dto
│ │ │ ├───model
│ │ │ ├───infra
│ │ │ ├───repository
│ │ │ └───service
│ │ └───resources
│ │ ├───static
│ │ └───templates
└── .gitignore
└── api-adopet.postman_collection.json
└── pom.xml
- O pacote
resources
contém o arquivoapplication.properties
que configura o ambiente da aplicação, e a conexão no banco de dados. - O pacote
controller
contém as classes que definem os endpoints da API. - O pacote
service
contém as classes responsáveis por acesso ao BD e chamar a lógica do negócio. - O pacote
infra
contém a classeExceptionEntityHandler
responsavel por lidar com as exceptions lançadas pelo controller ou service. - O pacote
model
contém as classes que representam os objetos e seu mapeamento no BD, assim como as validações para aplicar as regras de negócio. - O pacote
repository
contém as interfaces que definem operações de acesso a dados para as entidades. - Na source do projeto temos o arquivo
.gitignore
que especifica os arquivos e pastas que devem ser ignorados pelo controle de versão do Git - O arquivo
api-adopet.postman_collection
para consultar e testar os endpoints na API. - O arquivo
pom.xml
para download das dependencias necessarias para o projeto usando maven.
No projeto foi utilizado uma imagem MySQL em um Docker container para desenvolvimento;
Foi adicionado a dependência springdoc
para facilitar a documentação e visualização dos endpoints (acessar rodando localmente);
Alem das dependencias para desenvolvimento com Spring Framework - Web, Bean, JPA;
Links para uso e documentação:
https://hub.docker.com/_/mysql
https://dev.mysql.com/doc/
https://spring.io/projects/spring-data-jpa
https://docs.spring.io/spring-boot/docs/current/reference/html/web.html
http://localhost:8080/swagger-ui/index.html