Skip to content

GabiFerraz/Product-Api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Product API

Essa api é parte do projeto da Fase 4 da Especialização em Arquitetura e Desenvolvimento Java da FIAP. Um sistema de gerenciamento de pedidos integrado com Spring e Mocrosserviços. A aplicação foi desenvolvida em Java 21, utilizando Spring Boot, Maven, um banco de dados H2 para testes, Mockito e JUnit 5 para testes unitários, Lombok para facilitar o desenvolvimento e documentação gerada pelo Swagger.

Descrição do Projeto

O objetivo desse sistema é abranger desde a gestão de clientes e produtos até o processamento e entrega de pedidos, enfatizando a autonomia dos serviços, comunicação eficaz e persistência de dados isolada. Esta API é responsável pela gestão de produtos.

Funcionalidades

A API permite:

  • Cadastrar, buscar, atualizar e deletar produtos e seus respectivos dados.

Tecnologias Utilizadas

  • Java 21
  • Spring Boot
  • Spring Data JPA
  • Maven
  • Banco de Dados H2
  • Banco de Dados Mysql
  • Mockito e JUnit 5
  • Lombok
  • Swagger
  • Docker Compose
  • Spotless
  • Jacoco
  • Docker
  • RabbitMQ

Estrutura do Projeto

O projeto segue uma arquitetura modularizada, organizada nas seguintes camadas:

  • core: Contém as regras de negócio do sistema.
  • domain: Define as entidades principais do domínio.
  • domain.exception: Exceções personalizadas para regras de negócio.
  • dto: Representa as entradas e saídas de dados para a API.
  • gateway: Interfaces para interação com o banco de dados.
  • usecase: Contém os casos de uso do sistema.
  • usecase.exception: Exceções personalizadas para regras de negócio.
  • entrypoint.configuration: Configurações do sistema, incluindo tratamento de exceções.
  • entrypoint.controller: Controladores responsáveis por expor os endpoints da API.
  • infrastructure.gateway: Implementações das interfaces de gateway.
  • infrastructure.persistence.entity: Representação das entidades persistidas no banco de dados.
  • infrastructure.persistence.repository: Interfaces dos repositórios Spring Data JPA.
  • presenter: Representação dos dados de saída para a API.

Pré-requisitos

  • Java 21
  • Maven 3.6+
  • IDE como IntelliJ IDEA ou Eclipse

Configuração e Execução

  1. Clone o repositório:
    git clone https://github.com/GabiFerraz/Product-Api.git
  2. Instale as dependências:
    mvn clean install
  3. Execute o projeto:
    mvn spring-boot:run

Uso da API

Para visualização dos dados da api no banco de dados H2, rodar o comando: mvn "-Dspring-boot.run.profiles=h2" spring-boot:run e acessar localmente o banco através do endpoint:

  • Banco H2: http://localhost:8080/h2-console
  • Driver Class: org.h2.Driver
  • JDBC URL: jdbc:h2:mem:product
  • User Name: gm
  • Password: Para visualização dos dados da api no banco de dados Mysql, subir o docker-compose: docker-compose up --build

Os endpoints estão documentados via Swagger:

Possibilidades de Chamadas da API

  1. Cadastro de Produto:
curl --location 'localhost:8080/api/products' \
--header 'Content-Type: application/json' \
--data '{
"name": "Bola de Futebol",
"sku": "BOLA-123-ABC",
"price": 10.0
}'
  1. Busca de Produto:
curl --location 'localhost:8080/api/products/BOLA-123-ABC'
  1. Atualização de Produto:
curl --location --request PUT 'localhost:8080/api/products/BOLA-123-ABC' \
--header 'Content-Type: application/json' \
--data '{
"name": "Bola de Futebol 2",
"sku": "BOLA-123-ABC",
"price": 20.0
}'
  1. Delete de Produto:
curl --location --request DELETE 'localhost:8080/api/products/BOLA-123-ABC'

Testes

Para rodar os testes unitários:

mvn test

Lembrando que o docker precisa estar rodando para os testes funcionarem: docker-compose up -d

Rodar o coverage:

mvn clean package

Depois acessar pasta target/site/jacoco/index.html

O projeto inclui testes unitários, testes de integração e testes de arquitetura para garantir a qualidade e confiabilidade da API.

Desenvolvedora:

  • Gabriela de Mesquita Ferraz - RM: 358745

About

Projeto Tech Challenge da Pós-Graduação em Arquitetura e Desenvolvimento Java da FIAP - Fase 4

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages