Explore o mundo digital dos Digimons através da nossa API RESTful! 🚀 Com o Digimon API, você pode consultar, adicionar, atualizar e deletar informações sobre seus Digimons favoritos de forma fácil e rápida. Desenvolvida em Java com Spring Boot, esta API oferece endpoints bem definidos, documentação interativa com Swagger e está pronta para ser executada em qualquer ambiente graças à containerização com Docker. Mergulhe nesta aventura tecnológica e conecte-se ao universo Digimon! 🌐
- Descrição
- Objetivos
- Principais Funcionalidades
- Principais Tecnologias Utilizadas
- Estrutura do Projeto
- Requisitos
- Como Executar?
- Imagens da Aplicação
- Endpoints Disponíveis
- Features Futuras
- Perguntas Frequentes
- Licença
- Como Contribuir?
- Autor e Contato
- Agradecimentos Especiais
Bem-vindo à Digimon API! Este é um projeto de API RESTful desenvolvido em Java utilizando o framework Spring Boot. A API permite consultar, inserir, editar e deletar informações sobre Digimons em um banco de dados PostgreSQL. O projeto segue a arquitetura MVC, inclui documentação com Swagger e está containerizado com Docker para facilitar a execução e distribuição.
- Aprendizado e Prática: Desenvolver habilidades em Java Spring Boot e construção de APIs RESTful.
- Facilidade de Uso: Fornecer uma API simples e fácil de usar para interagir com dados de Digimons.
- Escalabilidade: Criar uma base sólida que possa ser expandida com novas funcionalidades no futuro.
- Boas Práticas: Implementar padrões de projeto, documentação e testes para garantir a qualidade do código.
- Consulta de Digimons:
- Listar todos os Digimons.
- Buscar Digimons por ID.
- Buscar Digimons por nome.
- Buscar Digimons por nível.
- Manipulação de Digimons:
- Criar um novo Digimon.
- Atualizar informações de um Digimon existente.
- Deletar um Digimon do banco de dados.
- Documentação:
- Acesso ao Swagger UI para documentação e testes das rotas.
- Linguagem: Java 17
- Framework: Spring Boot
- Banco de Dados: PostgreSQL
- Documentação: Swagger (Springdoc OpenAPI)
- Containerização: Docker
- Gerenciamento de Dependências: Maven
A estrutura do projeto é a seguinte:
digimon-api/
│
├── .idea/ (IGNORADO PELO .GITIGNORE)
├── .mvn/
│ └── wrapper/
│ └── maven-wrapper.properties
├── developer_notes/ (IGNORADO PELO .GITIGNORE)
├── docs/
│ ├── images/
│ │ ├── digimon-banner.jpg
│ │ ├── digimonapi-docs.png
│ │ └── digimonapi-terminal.png
│ ├── challenge_gfinnovation.md
│ ├── commits_pattern.md
│ ├── commits_pattern_ptbr.md
│ └── digimon_list.md
├── other_codes/
│ ├── create_db.sql
│ └── digimon_list_generator.py
├── src/
│ ├── main/
│ │ └── java/
│ │ ├── com/
│ │ │ └── globalfinanceiro/
│ │ │ └── digimon_api/
│ │ │ ├── configuration/
│ │ │ │ └── SwaggerConfiguration.java
│ │ │ ├── controller/
│ │ │ │ └── DigimonController.java
│ │ │ ├── dto/
│ │ │ │ └── DigimonDTO.java
│ │ │ ├── initializer/
│ │ │ │ └── DatabaseInitializer.java
│ │ │ ├── model/
│ │ │ │ └── Digimon.java
│ │ │ ├── repository/
│ │ │ │ └── DigimonRepository.java
│ │ │ ├── service/
│ │ │ │ └── DigimonService.java
│ │ │ └── DigimonApiApplication.java
│ │ └── resources/
│ │ ├── static/
│ │ ├── templates/
│ │ ├── application.properties
│ │ ├── banner.txt
│ │ ├── digimons_data.json
│ │ └── logback-spring.xml
│ └── test/
│ └── java/
│ └── com/
│ └── globalfinanceiro/
│ └── digimon_api/
│ └── DigimonApiApplicationTests.java
├── target/ (IGNORADO PELO .GITIGNORE)
├── .gitignore
├── docker-compose.yaml
├── Dockerfile
├── HELP.md (IGNORADO PELO .GITIGNORE)
├── LICENSE
├── mvnw
├── mvnw.cmd
├── pom.xml
├── README.md
└── README_ptbr.md
.idea/: Configurações do IntelliJ IDEA (ignorado pelo.gitignore)..mvn/: Wrapper do Maven.wrapper/: Configurações do Maven Wrapper.maven-wrapper.properties: Propriedades do Maven Wrapper.
developer_notes/: Notas e anotações adicionais feitas pelo desenvolvedor (ignorado pelo.gitignore).docs/: Documentação do projeto.images/: Imagens utilizadas na documentação.digimon-banner.jpg: Banner do projeto.digimonapi-docs.png: Documentação da API.digimonapi-terminal.png: Terminal com a API em execução.
challenge_gfinnovation.md: Desafio proposto pela Global Financeiro.commits_pattern.md: Padrão de commits em inglês.commits_pattern_ptbr.md: Padrão de commits em português.digimon_list.md: Lista de Digimons presentes inicialmente no projeto.
other_codes/: Códigos adicionais utilizados durante o projeto.create_db.sql: Script SQL para criação do banco de dados.digimon_list_generator.py: Script Python para gerar a lista de Digimons.
src/: Código-fonte do projeto.main/: Código-fonte principal.java/: Código-fonte Java.com/globalfinanceiro/digimon_api/: Pacote principal do projeto.configuration/: Configurações do projeto.SwaggerConfiguration.java: Configuração do Swagger.
controller/: Controladores REST.DigimonController.java: Controlador da API.
dto/: DTOs (Data Transfer Objects).DigimonDTO.java: DTO para Digimons.
initializer/: Inicializador do banco de dados.DatabaseInitializer.java: Inicializador do banco de dados.
model/: Entidades do banco de dados.Digimon.java: Entidade Digimon.
repository/: Repositórios JPA.DigimonRepository.java: Repositório de Digimons.
service/: Serviços da aplicação.DigimonService.java: Serviço de Digimons.
DigimonApiApplication.java: Classe principal da aplicação.
resources/: Recursos da aplicação.static/: Recursos estáticos.templates/: Templates HTML.application.properties: Configurações da aplicação.banner.txt: Banner de inicialização.digimons_data.json: Dados iniciais dos Digimons.logback-spring.xml: Configurações de logging.
test/: Código de testes.java/: Código de testes Java.com/globalfinanceiro/digimon_api/: Pacote de testes.DigimonApiApplicationTests.java: Testes da aplicação.
target/: Diretório de saída do Maven (ignorado pelo.gitignore)..gitignore: Arquivo de configuração do Git para ignorar arquivos/diretórios.docker-compose.yaml: Arquivo de configuração do Docker Compose.Dockerfile: Arquivo de configuração do Docker.HELP.md: Arquivo de ajuda do Spring Boot (ignorado pelo.gitignore).LICENSE: Licença do projeto.mvnw: Wrapper do Maven.mvnw.cmd: Wrapper do Maven.pom.xml: Arquivo de configuração do Maven.README.md: Arquivo README do projeto.README_ptbr.md: Arquivo README em português.
- Java 17 ou superior.
- Docker e Docker Compose para containerização. (Opcional mas recomendado).
- PostgreSQL (Opcional se utilizar Docker).
Siga os passos abaixo para executar o projeto localmente.
Certifique-se de que você tem o Docker e o Docker Compose instalados.
git clone https://github.com/BrunoTanabe/digimon-api.git
cd digimon-apidocker-compose up --buildEste comando fará o seguinte:
- Construir a imagem do aplicativo Spring Boot.
- Baixar a imagem do PostgreSQL.
- Iniciar ambos os containers e configurar a rede entre eles.
A API estará disponível em http://localhost:5431.
A documentação interativa da API pode ser acessada em http://localhost:5431/ ou http://localhost:5431/.
Se preferir executar a aplicação sem Docker, siga os passos abaixo (não recomendado). Certifique-se de ter Java 17 e o PostgreSQL instalados.
git clone https://github.com/BrunoTanabe/digimon-api.git
cd digimon-api- Instale o PostgreSQL.
- Crie um banco de dados chamado
digimonapi. - Atualize as configurações de conexão no arquivo
application.propertiesse necessário.
mvn clean packagejava -jar target/digimon-api-0.0.1-SNAPSHOT.jarA API estará disponível em http://localhost:5431.
A documentação interativa da API pode ser acessada em http://localhost:5431/ ou http://localhost:5431/.
Caso a aplicação esteja em execução, você poderá visualizar a documentação da API e testar os endpoints através do Swagger UI. Abaixo estão algumas imagens da aplicação em execução.
GET /digimons: Retorna todos os Digimons.GET /digimons/id/{id}: Retorna um Digimon pelo ID.GET /digimons/name/{name}: Retorna Digimons que correspondem ao nome.GET /digimons/level/{level}: Retorna Digimons que correspondem ao nível.
POST /digimons: Cria um novo Digimon.-
Body:
{ "name": "Nome do Digimon", "img": "URL da imagem", "level": "Nível do Digimon" }
-
PUT /digimons/{id}: Atualiza um Digimon existente.-
Body:
{ "name": "Nome atualizado", "img": "URL da imagem atualizada", "level": "Nível atualizado" }
-
DELETE /digimons/{id}: Deleta um Digimon pelo ID.
- Implementação de Testes Unitários e de Integração: Desenvolver testes para garantir a qualidade do código.
- Autenticação e Autorização: Implementar segurança nas rotas da API.
- Paginação e Filtros Avançados: Melhorar as funcionalidades de busca.
- Frontend: Desenvolver uma interface gráfica para interagir com a API.
Veja a seção Como Contribuir? para mais detalhes.
Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.
Contribuições são bem-vindas! Sinta-se à vontade para enviar pull requests, abrir issues ou sugerir melhorias.
- Faça um fork do projeto.
- Crie uma nova branch:
git checkout -b feature/nova-funcionalidade. - Commit suas mudanças:
git commit -m 'Adiciona nova funcionalidade'. - Faça push para a branch:
git push origin feature/nova-funcionalidade. - Abra um Pull Request.
- Nome: Bruno Tanabe
- Email: tanabebruno@gmail.com
- LinkedIn: linkedin.com/in/tanabebruno
Gostaria de expressar minha sincera gratidão à GF Innovation por me proporcionar a oportunidade de participar do desafio técnico e desenvolver este projeto. 🚀


