Pedro-Manoel / api-rest-sistema-estoque-produto

📮 API de estoque de produtos desenvolvida em Spring Boot para fins de aprendizagem

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

📮 Sistema de Estoque de Produtos

GitHub top language GitHub language count Repository size GitHub license
Run in Insomnia

🔖 Sobre

API de estoque de produtos desenvolvida em Spring Boot para fins de aprendizagem. O banco de dados utilizado foi o H2. Para os testes da API foi utilizado o JUnit5, e para a documentação o Swagger.

💥 Utilização

  • 👉 Pré-requisitos

    • É necessário possuir o Java instalado no computador
    • É necessário possuir o Maven instalado no computador
  1. Faça o clone do repositório:

      $ git clone https://github.com/Pedro-Manoel/api-rest-sistema-estoque-produto.git
  2. Entre na pasta do projeto:

      $ cd api-rest-sistema-estoque-produto
  3. Execute o seguinte comando

    1. Para executar a aplicação:

      $ mvn spring-boot:run
    2. Para executar os testes:

      $ mvn test

🔰 Rotas da Aplicação

Um demostrativo do funcionamento das rotas da API utilizando dados fictícios. As rotas são as seguintes:

🚏 /swagger-ui.html

  • GET : rota que retorna a documentação da API gerada pelo Swagger.

🚏 /h2

  • GET : rota que retorna uma interface WEB para interagir com o banco de dados H2.

🚏 /tiposproduto

  • POST : rota para criar um tipo de produto.

    • Request

      {
          "nome": "Perecível"
      }
    • Response

      {
          "id": 1,
          "nome": "Perecível"
      }
  • GET : rota para listar todos os tipos de produto cadastrados.

    • Response

      [
          {
              "id": 1,
              "nome": "Perecível"
          },
          {
              "id": 2,
              "nome": "Industrial"
          },
          {
              "id": 3,
              "nome": "Duravél"
          } 
      ]

🚏 /tiposproduto/{id}

  • GET : rota para retornar um tipo de produto já cadastrado.

    • Response

      {
          "id": 1,
          "nome": "Perecível"
      }
  • PUT : rota para atualizar um tipo de produto já cadastrado.

    • Request

      {
          "nome": "Não Duravél"
      }
    • Response

      {
          "id": 1,
          "nome": "Não Duravél"
      }
  • DELETE : rota para remover um tipo de produto já cadastrado.

    • Response

      {
          "message": "Tipo de produto com id 1 foi removido com sucesso"
      }

🚏 /fornecedor

  • POST: rota para criar um fornecedor.

    • Request

      {
          "nome": "Márcia Renata Souza",
          "cnpj": "14.349.383/0001-12",
          "telefone": "(83) 99431-0895",
          "email": "marciarenata@flores.com.br",
          "endereco" : {
              "rua": "Rua Antônio Vicente",
              "bairro": "Jaguaribe",
              "cidade": "João Pessoa",
              "numero": 16,
              "cep": "58015-210",
              "uf": "PB"	
          }
      }
    • Response

      {
          "id": 1,
          "nome": "Márcia Renata Souza",
          "cnpj": "14.349.383/0001-12",
          "telefone": "(83) 99431-0895",
          "email": "marciarenata@flores.com.br",
          "endereco" : {
              "rua": "Rua Antônio Vicente",
              "bairro": "Jaguaribe",
              "cidade": "João Pessoa",
              "numero": 16,
              "cep": "58015-210",
              "uf": "PB"	
          }
      }
  • GET: rota para listar todos os fornecedores cadastrados.

    • Response

      [
          {
              "id": 1,
              "nome": "Márcia Renata Souza",
              "cnpj": "14.349.383/0001-12",
              "telefone": "(83) 99431-0895",
              "email": "marciarenata@flores.com.br",
              "endereco" : {
                  "rua": "Rua Antônio Vicente",
                  "bairro": "Jaguaribe",
                  "cidade": "João Pessoa",
                  "numero": 16,
                  "cep": "58015-210",
                  "uf": "PB"	
              }
          },
          {
              "id": 2,
              "nome": "Paulo Anderson Silveira",
              "cnpj": "69.496.726/0001-63",
              "telefone": "(83) 99431-0895",
              "email": "ppauloanderson@queirozgalvao.com",
              "endereco" : {
                  "rua": "Rua Antônio Brant Ribeiro",
                  "bairro": "Centro",
                  "cidade": "Ponte Nova",
                  "numero": 18,
                  "cep": "35430-036",
                  "uf": "MG"	
              }
          },
          {
              "id": 3,
              "nome": "Lorenzo Rodrigo Figueiredo",
              "cnpj": "89.847.027/0001-28",
              "telefone": "(34) 99276-3804",
              "email": "llorenzorodrigofigueiredo@dyna.com.br",
              "endereco" : {
                  "rua": "Rua das Laranjeiras",
                  "bairro": "Sobradinho",
                  "cidade": "Brasília",
                  "numero": 25,
                  "cep": "73015-135",
                  "uf": "DF"	
              }
          }
           
      ]

🚏 /fornecedores/{id}

  • GET: rota para retornar um fornecedor já cadastrado.

    • Response

      {
          "id": 1,
          "nome": "Márcia Renata Souza",
          "cnpj": "14.349.383/0001-12",
          "telefone": "(83) 99431-0895",
          "email": "marciarenata@flores.com.br",
          "endereco" : {
              "rua": "Rua Antônio Vicente",
              "bairro": "Jaguaribe",
              "cidade": "João Pessoa",
              "numero": 16,
              "cep": "58015-210",
              "uf": "PB"	
          }
      }
  • PUT: rota para atualizar um fornecedor já cadastrado.

    • Request

      {
          "nome": "Márcia Renata Souza",
          "cnpj": "14.349.383/0001-12",
          "telefone": "(83) 99431-2245",
          "email": "marciarenata@hotmail.com.br",
          "endereco" : {
              "rua": "Rua Treze",
              "bairro": "Umbu",
              "cidade": "Alvorada",
              "numero": 326,
              "cep": "94834-280",
              "uf": "RS"	
          }
      }
    • Response

      {
          "id": 1,
          "nome": "Márcia Renata Souza",
          "cnpj": "14.349.383/0001-12",
          "telefone": "(83) 99431-2245",
          "email": "marciarenata@hotmail.com.br",
          "endereco" : {
              "rua": "Rua Treze",
              "bairro": "Umbu",
              "cidade": "Alvorada",
              "numero": 326,
              "cep": "94834-280",
              "uf": "RS"	
          }
      }
  • DELETE: rota para remover um fornecedor já cadastrado.

    • Response

      {
          "message": "Fornecedor com id 1 foi removido com sucesso"
      }

🚏 /produtos

  • POST: rota para criar um produto.

    • Request

      {
          "nome": "Arroz branco",
          "precoVenda": 2.50,
          "precoCompra": 2.80,
          "codBarra": "508010204471",
          "quantEstoque": 18,
          "fornecedorId": 1,
          "tipoProdutoId": 1
      }
    • Response

      {
          "id": 1,
          "nome": "Arroz branco",
          "precoVenda": 2.50,
          "precoCompra": 2.80,
          "codBarra": "508010204471",
          "quantEstoque": 18,
          "fornecedorId": 1,
          "tipoProdutoId": 1
      }
  • GET: rota para listar todos os produtos cadastrados.

    • Response

      [
          {
              "id": 1,
              "nome": "Arroz branco",
              "precoVenda": 2.50,
              "precoCompra": 2.80,
              "codBarra": "508010204471",
              "quantEstoque": 18,
              "fornecedorId": 1,
              "tipoProdutoId": 1
          },
          {
              "id": 2,
              "nome": "Feijão preto",
              "precoVenda": 3.20,
              "precoCompra": 2.20,
              "codBarra": "664659445924",
              "quantEstoque": 13,
              "fornecedorId": 3,
              "tipoProdutoId": 1
          },
          {
              "id": 3,
              "nome": "Doce de leite",
              "precoVenda": 4.40,
              "precoCompra": 4.60,
              "codBarra": "328607918450",
              "quantEstoque": 23,
              "fornecedorId": 2,
              "tipoProdutoId": 2
          } 
      ]

🚏 /produtos/{id}

  • GET: rota para retornar um produto já cadastrado.

    • Response

      {
          "id": 1,
          "nome": "Arroz branco",
          "precoVenda": 2.50,
          "precoCompra": 2.80,
          "codBarra": "508010204471",
          "quantEstoque": 18,
          "fornecedorId": 1,
          "tipoProdutoId": 1
      }
  • PUT: rota para atualizar um produto já cadastrado.

    • Request

      {
          "nome": "Arroz branco",
          "precoVenda": 3.50,
          "precoCompra": 3.80,
          "codBarra": "508010204471",
          "quantEstoque": 9,
          "fornecedorId": 2,
          "tipoProdutoId": 1
      }
    • Response

      {
          "id": 1,
          "nome": "Arroz branco",
          "precoVenda": 3.50,
          "precoCompra": 3.80,
          "codBarra": "508010204471",
          "quantEstoque": 9,
          "fornecedorId": 2,
          "tipoProdutoId": 1
      }
  • DELETE: rota para remover um produto já cadastrado.

    • Response

      {
          "message": "Produto com id 1 foi removido com sucesso",
      }

🚏 /produtos/{id}/estoque

  • PATCH: rota para atualizar o estoque de um produto já cadastrado.

    • Request

      {
          "quantEstoque": 12,
      }
    • Response

      {
          "id": 1,
          "nome": "Arroz branco",
          "precoVenda": 3.50,
          "precoCompra": 3.80,
          "codBarra": "508010204471",
          "quantEstoque": 12,
          "fornecedorId": 2,
          "tipoProdutoId": 1
      }

📃 Licença

Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

About

📮 API de estoque de produtos desenvolvida em Spring Boot para fins de aprendizagem

License:MIT License


Languages

Language:Java 100.0%