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:runA aplicação expõe os seguintes endpoints:
-
AbrigoController
/abrigosGET: 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
/adocoesPOST: 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
/petsGET: Retorna uma lista paginada de pets.GET /{id}: Retorna detalhes de um pet específico.
-
TutorController
/tutoresPOST: 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
resourcescontém o arquivoapplication.propertiesque configura o ambiente da aplicação, e a conexão no banco de dados. - O pacote
controllercontém as classes que definem os endpoints da API. - O pacote
servicecontém as classes responsáveis por acesso ao BD e chamar a lógica do negócio. - O pacote
infracontém a classeExceptionEntityHandlerresponsavel por lidar com as exceptions lançadas pelo controller ou service. - O pacote
modelconté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
repositorycontém as interfaces que definem operações de acesso a dados para as entidades. - Na source do projeto temos o arquivo
.gitignoreque especifica os arquivos e pastas que devem ser ignorados pelo controle de versão do Git - O arquivo
api-adopet.postman_collectionpara consultar e testar os endpoints na API. - O arquivo
pom.xmlpara 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


